【问题标题】:Pandas - dividing each cell by column sum - But it returns the same value熊猫 - 将每个单元格除以列总和 - 但它返回相同的值
【发布时间】: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

标签: python pandas dataframe


【解决方案1】:

重症监护室

dfs.update(dfs.div(dfs.sum(axis=0),axis=1))
dfs

【讨论】:

  • 感谢您的建议,但没有成功,我已经更新了我的帖子...
  • 你用的是什么版本?它给了你什么错误?看起来它对我有用,除非我没有让你正确。请查看我的编辑
  • 我的 pandas 版本是 1.0.1 等等 - 你的结果也不对吗? 2列应该不完全相同吧?
  • 相同版本。我刚刚发布的输出答案是你想要的吗?运行时会出现什么错误?
  • Yoben 发现了问题……我是个白痴!无论如何感谢您的帮助
【解决方案2】:

为什么你有相同的输出,因为你的列有相同的分布,看看

dfs['7006091']/dfs['7007772']
0    1.003329
1    1.003329
2    1.003329
3    1.003329
4    1.003329
5    1.003329
6    1.003329
7    1.003329
dtype: float64

所以在我们用列 sum 标准化后它们的值是相同的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    • 2017-12-18
    • 2014-12-19
    相关资源
    最近更新 更多