【发布时间】:2017-06-09 21:44:16
【问题描述】:
我有两个数据框 df1 和 df2。 Df1 具有 A、B、C、D、E、F 列和 df2 A、B、J、D、E、K 列。我想用第一个数据帧的行更新第二个数据帧,但只有当两个第一列在两个数据帧中具有相同的值时。对于满足以下两个条件的每一行:
-
df1.A = df2.A -
df1.B = df2.B
然后相应地更新:
df2.D = df1.D
df2.E = df1.E
我的数据框有不同的行数。
当我尝试这段代码时,我得到一个 TypeError :cannot do position indexing with these indexers of type 'str'.
for a in df1:
for t in df2:
if df1.iloc[a]['A'] == df2.iloc[t]['A'] and df1.iloc[a]['B'] == df2.iloc[t]['B']:
df2.iloc[t]['D'] = df1.iloc[a]['D']
df2.iloc[t]['E'] = df1.iloc[a]['E']
【问题讨论】:
-
请包括样本输入数据和预期输出。见:stackoverflow.com/a/20159305/3339965
-
如果您的数据框有不同的行数,您希望如何将一列与另一列进行比较?