繁体   English   中英

熊猫:减去两个数据帧时的所有 NaN

[英]pandas: all NaNs when subtracting two dataframes

我有两个系列。 我想从另一个数据帧中减去一个数据帧,即使它们的列数不同。

>df1

index   0   1   2    3    4    5
TOTAL   5  46  56  110  185  629

>df2 
index   1   2   3    4    5
Use     25  37  86  151  512

我假设减去具有不同维度的两个数据框只会导致不匹配的列(在这种情况下,列 0)中出现 NaN。 其余列将是 df1[1]-df2[1]、df1[2]-df2[2] 等的结果。

>df1 - df2
index   0    1   2   3   4   5
TOTAL   NaN  21  19  24  34  117

但事实并非如此。 当我减去数据帧时会发生这种情况?

>df1 - df2
index   0   1   2   3   4   5
Use     NaN NaN NaN NaN NaN NaN
TOTAL   NaN NaN NaN NaN NaN NaN

我也试过只减去这些值:

>df1.values - df2.values
Traceback (most recent call last):

  File "<ipython-input-376-1dc5b3b4ad3e>", line 1, in <module>
    total_drugs.values-(restraints_drugs.values+norestraints_drugs.values)

ValueError: operands could not be broadcast together with shapes (1,6) (1,5) 

我做错了什么? 我正在使用熊猫 0.18。

您正在减去两个数据帧。 和行索引必须匹配。 在您的情况下,行索引TOTALUse不匹配。

为了得到你要找的东西,你想从df1减去系列df2.ix['Use']

df1.sub(df2.squeeze())

在此处输入图片说明

或者:

df1.sub(df2.ix['Use'])

或者:

df1.sub(df2.loc['Use'])

或者:

df1 - df2.ix['Use']

或者:

df1 - df2.loc['Use']

由于两个数据帧需要具有相同的索引,因此您可以重置索引,然后对数据帧执行减法。

使用它然后执行减法:

df1.reset_index(inplace=True)
df2.reset_index(inplace=True)

将索引重置为默认值后,您就可以执行减法/加法或任何操作。

df1-df2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM