import pandas as pdimport numpy as npnp.random.seed(0)df1 = pd.DataFrame(np.random.randint(10,size=(5,4)),index=List('ABCDE'),columns=List('abcd'))df2 = pd.DataFrame(np.random.randint(10,size=(2,index=List('CE'),columns=List('abcd')) a b c dA 5 0 3 3B 7 9 3 5C 2 4 7 6D 8 8 1 6E 7 7 8 1 a b c dC 5 9 8 9E 4 3 0 3
df2的索引始终是df1索引的子集,列名相同.
我想创建第三个数据帧df3 = df1 – df2.如果一个人这样做,就得到了
a b c dA NaN NaN NaN NaNB NaN NaN NaN NaNC -3.0 -5.0 -1.0 -3.0D NaN NaN NaN NaNE 3.0 4.0 8.0 -2.0
我不希望输出中的NA,而是df1的相应值.有没有一种聪明的方式来使用,例如在df2中未包含的行中,df1的值是否为fillna?
解决方法是仅减去所需的行,如:
sub_ind = df2.indexdf3 = df1.copy()df3.loc[sub_ind,:] = df1.loc[sub_ind,:] - df2.loc[sub_ind,:]
这给了我想要的输出
a b c dA 5 0 3 3B 7 9 3 5C -3 -5 -1 -3D 8 8 1 6E 3 4 8 -2
但也许有一种更直接的方法来实现这一目标?
解决方法 如果使用sub方法而不是 –,则可以传递填充值:df1.sub(df2,fill_value=0)Out: a b c dA 5.0 0.0 3.0 3.0B 7.0 9.0 3.0 5.0C -3.0 -5.0 -1.0 -3.0D 8.0 8.0 1.0 6.0E 3.0 4.0 8.0 -2.0总结
以上是内存溢出为你收集整理的python – 减去行数不等的数据帧全部内容,希望文章能够帮你解决python – 减去行数不等的数据帧所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)