我有一个数据框如下:
A B C
315 105 ABC
315 135 ABC
105 44 ABC
105 70 ABC
105 72 ABC
105 315 XYZ
105 319 XYZ
如果C列中的值是XYZ,我需要交换Col A&中的值。 B,否则让它原样。
实现这一目标的最有效方法是什么?
答案 0 :(得分:1)
找出C == XYZ
:
idx = df.C == 'XYZ'
然后使用loc
找到列A
和B
中的值,交换值并将其分配回来;请注意values
将结果从数据框转换为numpy数组,以便赋值不会尝试对齐列索引(这将导致无效):
df.loc[idx, ['A', 'B']] = df.loc[idx, ['B', 'A']].values
df
# A B C
#0 315 105 ABC
#1 315 135 ABC
#2 105 44 ABC
#3 105 70 ABC
#4 105 72 ABC
#5 315 105 XYZ
#6 319 105 XYZ