小编典典

将2列中的值合并为pandas数据框中的单个列

python

我正在寻找一种行为与T-SQL中的合并类似的方法。我有2列(列A和B)稀疏地填充在pandas数据框中。我想使用以下规则创建一个新列:

  1. 如果A列中的值 不为null ,则将该值用于新C列
  2. 如果A列中的 值为null ,则将B列中的值用于新C列

就像我提到的那样,这可以通过合并功能在MS SQL Server中完成。我还没有找到一个好的pythonic方法。是否存在?


阅读 317

收藏
2021-01-20

共1个答案

小编典典

使用Combine_first()

In [16]: df = pd.DataFrame(np.random.randint(0, 10, size=(10, 2)), columns=list('ab'))

In [17]: df.loc[::2, 'a'] = np.nan

In [18]: df
Out[18]:
     a  b
0  NaN  0
1  5.0  5
2  NaN  8
3  2.0  8
4  NaN  3
5  9.0  4
6  NaN  7
7  2.0  0
8  NaN  6
9  2.0  5

In [19]: df['c'] = df.a.combine_first(df.b)

In [20]: df
Out[20]:
     a  b    c
0  NaN  0  0.0
1  5.0  5  5.0
2  NaN  8  8.0
3  2.0  8  2.0
4  NaN  3  3.0
5  9.0  4  9.0
6  NaN  7  7.0
7  2.0  0  2.0
8  NaN  6  6.0
9  2.0  5  2.0
2021-01-20