【发布时间】:2020-05-15 00:55:35
【问题描述】:
我在 Pandas 中遇到了一个非常奇怪(且令人沮丧)的问题。 我想将数据框中的每个单元格除以列的总和。我已经用谷歌搜索并使用了建议的答案,但它不起作用 - 每行的内容都返回相同的值。
dfs = pd.DataFrame(np.random.randint(0,10,size=(3,3)), columns=['A','B','C'])
# Now here is the copied solution from google
dfs = dfs.div(dfs.sum(axis=0),axis=1)
因此,对于像上面这样的简单示例,它的效果非常好。但是当我在我的数据框上尝试它时,它有 1080 列,每一行都有相同的值。
我已确保删除所有 nan、inf 或除数字以外的任何内容,并且所有列的 dtype 都是 float64。我不知道为什么会这样,谁能给我一些想法是怎么回事?我有一种感觉,这是因为数据框的大小?但是对于 Pandas 来说,1080 列和 8 行的处理肯定不会太多吗?
提前致谢
编辑: 是的,运行此代码以获取我的数据框的前 2 列。
dfs = pd.DataFrame({'7006091':[2.219749271,2.15577658,1.857604216,
1.588101736,
0.925926932,
1.413871811,
1.528702513,
1.313778722
],'7007772':[2.21238513,
2.148624672,
1.851441511,
1.582833121,
0.922855119,
1.409181214,
1.523630958,
1.309420189
]})
我刚刚按照建议尝试了 dfs.update,但它也没有工作。这是返回的内容:
dfs.update(dfs.div(dfs.sum(axis=0),axis=1))
【问题讨论】:
-
你能显示你原来的 dfs 吗,只有两列
-
帖子更新了!这是难以理解的 - 我感觉有些 pandas 文件被损坏了
-
请勿发布代码、数据、错误消息等的图片 - 将文本复制或输入到问题中。 How to Ask