ale*_*e19 5 python dataframe pandas
我有两个系列。我想从另一个数据帧中减去一个数据帧,即使它们的列数不同。
>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
Run Code Online (Sandbox Code Playgroud)
我假设减去具有不同维度的两个数据框只会导致不匹配的列(在这种情况下,列 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
Run Code Online (Sandbox Code Playgroud)
但这种情况并非如此。当我减去数据帧时会发生这种情况?
>df1 - df2
index 0 1 2 3 4 5
Use NaN NaN NaN NaN NaN NaN
TOTAL NaN NaN NaN NaN NaN NaN
Run Code Online (Sandbox Code Playgroud)
我也试过只减去这些值:
>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)
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我正在使用熊猫 0.18。
您正在减去两个数据帧。 列索引和行索引必须匹配。在您的情况下,行索引TOTAL和Use不匹配。
df2.ix['Use']为了得到你正在寻找的东西,你想从中减去该系列df1
df1.sub(df2.squeeze())
Run Code Online (Sandbox Code Playgroud)
或者:
df1.sub(df2.ix['Use'])
Run Code Online (Sandbox Code Playgroud)
或者:
df1.sub(df2.loc['Use'])
Run Code Online (Sandbox Code Playgroud)
或者:
df1 - df2.ix['Use']
Run Code Online (Sandbox Code Playgroud)
或者:
df1 - df2.loc['Use']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6043 次 |
| 最近记录: |