【发布时间】:2018-12-13 21:28:11
【问题描述】:
我有 2 个 padas 数据框
df1 = pd.DataFrame({'id': [1001,1002,1004],
'col1': ["a","b","d"],
'col2': [1,2,6]})
df2 = pd.DataFrame({'id': [1001,1002,1003,1004,1005,1006,1007],
'a': [10,10,10,10,10,10,10],
'b': [2,2,2,2,2,2,2],
'c': [1,2,3,4,5,6,7],
'd': [5,5,5,5,5,4,5],
'e': [0,3,4,6,7,5,5]})
df1 和 df2 存在共同的 id。
只要值出现在 df1.col1(例如“a”)中,就从对应的 df2 id 和列名中减去 df1.col2 值 =df1.col1 值(“a”)。
上面的说法可能会令人困惑,但我会尝试用一个例子来解释:
df1 id 1001 有 col1=a 和 col2=1
我想要做的是我想从 df2 的 a 列中减去 1 为 id 1001 =10-1=9
在另一个例子中
df1 id =1004 有 col1 值 =d 和 col2=6 所以从 df2 对应于 id 1004 =5-6=-1 的列 d 中减去 6 最终结果将如下所示
a b c d e id
0 9 2 1 5 0 1001
1 10 0 2 5 3 1002
2 10 2 3 5 4 1003
3 10 2 4 -1 6 1004
4 10 2 5 5 7 1005
5 10 2 6 4 5 1006
6 10 2 7 5 5 1007
我应该如何在 Pandas 中有效地解决这个问题,因为我必须在大型数据集上重复这个练习很多次。
提前致谢
【问题讨论】:
-
您只需将轴参数传递给您的函数,它将按行而不是列工作