python - Python Pandas:从value不为null的其他列中创建新列

标签 python pandas numpy

我有一个这样的数据框

----------------
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/

相关文章:

python 转发 SIGINT 到子进程

python - TypeError : Cannot convert 0. 0 到 dtype int32 的 EagerTensor

python - Pandas 中的累积总和从零开始,以除最后一个条目以外的所有组的总和结束

python - 合并和减去 Pandas 中的 DataFrame 列?

python - 使用逻辑索引从数组中提取向量

python - RBF插值: LinAlgError: singular matrix

python - 当子进程终止时如何运行函数?

python - 启动 os.walk,不带主目录名

python - 在 Windows 上降低 multiprocessing.Pool 的进程优先级

python - 读入 pandas 列作为 base64 字符串