首页 > 解决方案 > 在熊猫中合并同一数据框中的列

问题描述

pandas 中是否有方法/内置函数允许根据列的名称将多列合并为一个?

例如,取这 3 列,其中每一行只有一个非 NaN 值

+-------+-------+-------+
| name1 | name2 | name3 |
+-------+-------+-------+
| a     | NaN   | NaN   |
| b     | NaN   | NaN   |
| NaN   | c     | NaN   |
| NaN   | d     | NaN   |
| NaN   | NaN   | e     |
| NaN   | NaN   | f     |
+-------+-------+-------+

并创建一个新列,例如

+------+
| name |
+------+
| a    |
| b    |
| c    |
| d    |
| e    |
| f    |
+------+

我知道你可以用 2 列来做一些事情,比如df.fill填充现有的列,但是有没有办法像我的例子一样创建一个新的填充列?

标签: pythonpandas

解决方案


使用bfill

df['name'] = df.bfill(axis=1)['name1']
print(df)

# Output
  name1 name2 name3 name
0     a   NaN   NaN    a
1     b   NaN   NaN    b
2   NaN     c   NaN    c
3   NaN     d   NaN    d
4   NaN   NaN     e    e
5   NaN   NaN     f    f

推荐阅读