【发布时间】:2020-07-04 11:51:44
【问题描述】:
我正在尝试在我的数据框中删除一些空行。下面的代码表明数据类型确实是稀疏的。
items_users_sparse_top_tags_df = items_users_sparse_pd.loc[tracks_tags_df.index]
items_users_sparse_top_tags_df.rename_axis('tracks', axis = 'index', inplace = True)
items_users_sparse_top_tags_df.dtypes
结果:
playlists
37i9dQZF1DX7KNKjOK0o75 Sparse[int64, 0]
37i9dQZF1DWT1y71ZcMPe5 Sparse[int64, 0]
37i9dQZF1DX1tyCD9QhIWF Sparse[int64, 0]
37i9dQZF1DWSXBu5naYCM9 Sparse[int64, 0]
3JwPVKISB9IBlE2RST1MVn Sparse[int64, 0]
0lDMDuxqUYRAHAg2aSB4Mh Sparse[int64, 0]
6JX1W7EUwl28ApynqRIzGd Sparse[int64, 0]
73pA7uClVdMP4UM4NHYkjw Sparse[int64, 0]
7rRuBmh62FSsGh7ymtIUl3 Sparse[int64, 0]
2moEpTGsu9XpWjc7DMCgH6 Sparse[int64, 0]
Length: 3990, dtype: object
当我尝试删除为空的用户(作为转置后的行)时,dtype 正在更改。 代码:
users_items_sparse_dropped = items_users_sparse_top_tags_df.T[(items_users_sparse_top_tags_df !=0).any()]
数据类型:
tracks
2res3Ptlahsu1kh5XtFhu4 object
4UGxnxGlpc7BB8Cbu8vITC object
63diy8Bzm0pHMAU37By2Nh object
6wBHYoPsAqS88OwfjCvlaq object
1aoaegj0Bv8p1N6dWyCDbr object
...
2IH4PRZxA3W6sIWcFU0GKZ object
2JKlf0IYz5oWsT3OCLyjpO object
0fa2P8krhE1K19MUUh0meb object
2CM7CAL7aJ5WkPU0oGbA96 object
0w2U0uERbUTJMNIKdTSUkj object
Length: 15679, dtype: object
虽然代码确实删除了空的用户行,但我更愿意保持数据帧稀疏,这样我就不必再次对其进行转换。
使用稀疏数据帧而不是直接使用 scipy 稀疏格式的原因是将 ID 保留为索引,并且在数据操作等过程中不会搞砸。
【问题讨论】:
标签: python-3.x pandas sparse-dataframe