我有一个至少两个串联数据帧的串联数据帧:
i.e.
df1
Name | Type | ID
0 Joe A 1
1 Fred B 2
2 Mike Both 3
3 Frank Both 4
df2
Name | Type | ID
0 Bill Both 1
1 Jill Both 2
2 Mill B 3
3 Hill A 4
ConcatDf:
Name | Type | ID
0 Joe A 1
1 Fred B 2
2 Mike Both 3
3 Frank Both 4
0 Bill Both 1
1 Jill Both 2
2 Mill B 3
3 Hill A 4
假设之后是串联的,我想为Type
到df1
的所有记录以及{{1}的所有记录设置C
}至df2
。这可能吗?
数据帧的索引大小可以相差很大。
谢谢。
答案 0 :(得分:0)
df3 = pd.concat([df1,df2], keys = (1,2))
df3.loc[(1), 'Type'] == 'C'
在连接时,您可以分配df的键。这将创建一个多索引,其键将分隔的df分开。然后,当您将.loc
与按键一起使用时,可以在按键周围使用(
来呼叫该群组。在上面的代码中,我们将df1的所有类型(键为1)更改为C。
答案 1 :(得分:0)
使用merge
和indicator=True
来查找属于df1
或df2
的行。接下来,使用np.where
分配A
或B
。
t = concatdf.merge(df1, how='left', on=concatdf.columns.tolist(), indicator=True)
concatdf['Type'] = np.where(t._merge.eq('left_only'), 'B', 'C')
Out[2185]:
Name Type ID
0 Joe C 1
1 Fred C 2
2 Mike C 3
3 Frank C 4
0 Bill B 1
1 Jill B 2
2 Mill B 3
3 Hill B 4