gpt4 book ai didi

python - 将一个 Pandas Dataframe 除以另一个 - 忽略索引但尊重列

转载 作者:太空狗 更新时间:2023-10-30 01:01:04 29 4
gpt4 key购买 nike

我有 2 个数据框。我想广播除法运算

df1= pd.DataFrame([[1.,2.,3.,4.], [5.,6.,7.,8.], [9.,10.,11.,12.]],
columns=['A','B','C','D'], index=['x','y','z'])

df2= pd.DataFrame([[0.,1.,2.,3.]], columns=['A','B','D','C'], index=['q'])

请注意,列在 df2 中的对齐方式略有不同。

我想将 df1 除以 df2,其中行被广播但列标签被尊重。

   A   B   C   D
x 1 2 3 4
y 5 6 7 8
z 9 10 11 12


A B D C
q 0 1 2 3

这是错误的。

df1.values/df2.values

[[ inf 2. 1.5 1.33333333]
[ inf 6. 3.5 2.66666667]
[ inf 10. 5.5 4. ]]

我想要的答案是:

   A    B   C      D
x inf 2 1 2
y inf 6 2.33 4
z inf 10 3.66 6

最佳答案

如果您除以一个系列(通过选择第二个数据框的那一行),pandas 会将这个系列与第一个数据框的列对齐,从而给出所需的结果:

In [75]: df1 / df2.loc['q']
Out[75]:
A B C D
x inf 2 1.000000 2
y inf 6 2.333333 4
z inf 10 3.666667 6

如果您不知道/不想使用那一行的名称,您可以使用 squeeze将单列数据框转换为一系列:df1/df2.squeeze()(参见@EdChum 的回答)。

关于python - 将一个 Pandas Dataframe 除以另一个 - 忽略索引但尊重列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30327427/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com