如果值是唯一的:
df['c4'] = df.set_index('c1').loc[df['c2'], 'c3'].values
print (df)
c1 c2 c3 c4
0 a b 4 1
1 b a 1 4
如果不是,它是有点complicted,因为需要对cumcount
创造独特MultiIndex
然后reindex
:
print (df)
c1 c2 c3
0 a b 5
1 a a 4
2 b a 1
a = df.groupby('c1').cumcount()
idx = pd.MultiIndex.from_arrays([df.groupby('c2').cumcount(), df['c2']])
print (idx)
MultiIndex(levels=[[0, 1], ['a', 'b']],
labels=[[0, 0, 1], [1, 0, 0]],
names=[None, 'c2'])
df['c4'] = df.set_index([a,'c1']).reindex(idx)['c3'].values
print (df)
c1 c2 c3 c4
0 a b 5 1
1 a a 4 5
2 b a 1 4
'column3的相同值,但按列2的顺序'什么d你的意思是按第2栏的顺序排列。它是按第2列排序的? –