将一列值移动到另一列 - 熊猫

时间:2017-06-09 18:08:38

标签: pandas

这是我用来将某列的某个列的值移动到同一行的另一列的当前代码:

#Move 2014/15 column ValB to column ValA
df.loc[(df.Survey_year == 2014), 'ValA'] = df.loc[(df.Survey_year == 2014), 'ValB']

除了2015年,我再次做同样的.loc []。这有效,但我没有 我认为如果我使用的话,这是最有效的方法 数据框有很多值可以做到这一点。

2 个答案:

答案 0 :(得分:4)

清洁选项

mask = df.Survey_year.isin([2014, 2015])
df.loc[mask, 'ValA'] = df.loc[mask, 'ValB']

快速选项

mask = np.in1d(df.Survey_year.values, [2014, 2015])
bloc = df.index.get_loc('ValB')
v = df.values
df.loc[mask, 'ValA'] = v[mask, bloc]

答案 1 :(得分:3)

它类似但更简单的逻辑。 np.where允许您定义类似excel的if语句。如果(x = y,请执行此操作,请执行此操作,如果为false)。

import numpy as np

df['ValA'] = np.where((df.Survey_year == 2014) | (df.Survey_year == 2015), df['ValB'], df['ValA'])