我有一个这样的数据框
----------------
RecID| A |B
----------------
1 |NaN | x
2 |y | NaN
3 |z | NaN
4 |NaN | a
5 |NaN | b
我想从A和B创建一个新列C,以便如果A为空,则用B填充,如果B为空,则用A填充:
----------------------
RecID|A |B |C
----------------------
1 |NaN | x |x
2 |y | NaN |y
3 |z | NaN |z
4 |NaN | a |a
5 |NaN | b |b
最后,如果我有两列以上,是否有一种有效的方法来做到这一点,例如我有A-Z列,并想从A-Z列中创建一个与上面类似的新列A1?
最佳答案
如果是多列,则可以使用正向填充。本示例假定您要构建所有列“A”至“Z”的组合:
df['AZ'] = df.loc[:,'A':'Z'].fillna(method='ffill',axis=1)['Z']
此方法也适用于两列:
df['C'] = df.loc[:,'A':'B'].fillna(method='ffill',axis=1)['B']
#0 x
#1 y
#2 z
#3 a
#4 b
关于python - Python Pandas:从value不为null的其他列中创建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43765424/