【发布时间】:2016-07-16 04:06:24
【问题描述】:
我有两个不同大小的数据框,我想对四个不同列中的所有值进行比较,(两组两个)
基本上我想看看 df1['A'] == df2['A'] & where df1['B'] == df2['B'] 并返回 df1['C']'s值加上 df2['C'] 的值
import pandas as pd
df1 = pd.DataFrame({"A": [1, 2, 3, 4, 3], "B": [2, 5, 4, 7, 5], "C": [1, 2, 8, 0, 0]})
df2 = pd.DataFrame({"A": [1, 3, 2, 4, 8], "B": [5, 5, 4, 9, 1], "C": [1, 3, 3, 4, 6]})
df1:
A B C
0 1 2 1
1 2 5 2
2 3 4 8
3 4 7 0
4 3 5 0
...
df2:
A B C
0 1 5 1
1 3 4 3
2 2 5 4
3 4 9 4
5 8 1 6
...
in: df1['A'] == df2['A'] & where df1['B'] == df2['B']
df1['D'] = df1['C'] + df2['C']
out: df1:
A B C D
0 1 2 1 nan
1 2 5 2 6
2 3 4 8 11
3 4 7 0 nan
4 3 5 0 nan
我的实际数据框要大得多(120000 行数据,“A”列的值从 1 到 700,“B”从 1 到 300)所以我知道这可能是一个更长的过程。
【问题讨论】:
-
我还想说两列 'A' 中的数字重复了几次,把它想象成网格平面上的两组数据,其中有一个列和一个专用于每个单元格的行号,我需要在两个单元格相等的情况下进行数学运算(两行相等,两列相等)在这种情况下,我将它们分别命名为“A”和“B”,但那是为了避免混淆,我敢肯定,我做得不太好。