如何在不更改格式的情况下从稀疏数据框中删除行

飞利昂

我试图在我的数据框中删除一些空行。以下代码显示数据类型确实是稀疏的。

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 保留为索引,而不是在数据操作等过程中弄乱。

飞利昂

回答我自己的问题,问题是非空值的 int64 与空值的 nan 之间的兼容性,因为 nan 值被认为是浮点数。

当我转置矩阵时,dtypes 从 Sparse[int64, 0] 变为 dtype:O。

有一些解决方法 1) 使用 astype 将数据帧转换为浮动。2)如果有人真的想保留稀疏 int64 格式,则需要通过 using 创建一个新的稀疏pd.SparseDtype(int, fill_value = np.nan)dtype 然后在数据帧操作后使用 astyp 进行转换。

最后,据我尝试,类似的限制适用于 numpy 稀疏格式。

PS 一个有趣的发现:https : //pandas.pydata.org/pandas-docs/stable/user_guide/integer_na.html

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在不更改格式的情况下更新 PPT 文本框中的内容

如何在不更改任何格式的情况下删除文件中的特定列

如何在不遍历行的情况下丢弃 Pandas 数据框中的异常值?

如何在不更改数据格式的情况下用awk替换列

如何在不更改全局打印选项的情况下显示数据框的所有列?

如何在不更改行数和列数的情况下从矩阵创建数据框?

如何在删除异常值的情况下找到数据框中每一行的均值?

如何在保留最新数据的情况下从Spark数据框中删除重复项?

如何在不丢失Mysql中的数据的情况下更改列数据类型

如何在不更改特定列的情况下重新采样数据帧中的数据?

如何在不写入文件的情况下从数据框中获取 HTML?

如何在不创建新列的情况下增加数据框中的值?

如何在不覆盖的情况下替换 R 数据框中的值?

如何在不循环的情况下替换数据框中每个单元格的值

如何在不丢失数据的情况下从VG中删除PV?

如何在不更改顺序的情况下逐行读取数据帧?在Spark Scala中

如何在不丢失Xamp中数据的情况下将类型从varchar更改为Date

如何在不丢失顺序的情况下删除 Swift 中字符串的重复行?

如何在不执行 gforth/forth 中的代码的情况下更改行。(续行)

如何在不丢失数据的情况下将/ home格式从XFS更改为ext4

如何在不包含 None 的情况下在一行中打印数据框?

如何在不丢失NA行的情况下对R中的数据进行子集化?

如何在不分组的情况下串联熊猫中数据框的所有行

如何在不使用for循环的情况下替换数据框中的某些行

如何在不更改顺序的情况下合并具有相同行名(和列名)的多个数据框?

如何在不丢失数据框名称的情况下加入数据框

JS 如何在不更改语言环境(时间格式)的情况下更改时区

如何在不更改框阴影颜色的情况下更改 svg 颜色

如何在不丢失数据的情况下更改SQL数据库中的列数据类型