根据条件 (python) 用 nan 连接两列

Concatenate two columns with nan based on condition (python)

我在 pandas DataFrame 中有两列,如下所示:

ColA ColB
a a b c
b a c
c NaN
NaN d e f
NaN NaN

我想连接 ColA 和 ColB,这样

我如何在 Python 中对此进行编码,以便所需的输出如下所示:

ColA ColB ColC
a a b c a b c
b a c b a c
c NaN c
NaN d e f d e f
NaN NaN NaN

注意'a'表示一个'a b c' 表示一个文本字符串三个词

更新的答案(使用 pandas DataFrames): 好吧,假设你做到了:

import numpy as np
import pandas as pd

你的DataFrame如下:

df
  ColA   ColB
0    a  a b c
1    b    a c
2    c    NaN
3  NaN  d e f
4  NaN    NaN

然后定义组合函数:

def concat(row):
    a = row["ColA"]
    b = row["ColB"]
    if not pd.isnull(a) and pd.isnull(b):
        return a
    if pd.isnull(a) and not pd.isnull(b):
        return b
    if pd.isnull(a) and pd.isnull(b):
        return np.nan
    if a in b:
        return b
    else:
        return a + b

并将其应用于您的 DataFrame(每一行):

df.apply(concat, axis="columns")

是什么给出了这个结果:

0    a b c
1     ba c
2        c
3    d e f
4      NaN
dtype: object

当然,你还可以想一下,你是想在concat中做一个+的简单拼接,还是要加一个space等。 您通过以下方式获得最终结果:

df["ColC"] = df.apply(concat, axis="columns")

完了。