使用 pandas 合并列
Merging columns using pandas
我正在尝试使用 pandas 合并多项选择题列,这样我就可以对它们进行操作。我的问题的一个例子是:
C1 C2 C3
0 A A
1 B B
2 C C
3 D D
数据当前显示为 C1
和 C2
,但我需要将其合并到 1 列中,如 C3
中所示。
假设空单元格中为 NaN,一个选项是 bfill
第一列并复制它:
df['C3'] = df[['C1', 'C2']].bfill(axis=1)['C1']
这种方式可以扩展到任意数量的初始列。
输出:
C1 C2 C3
0 A NaN A
1 NaN B B
2 NaN C C
3 D NaN D
你可以试试 fillna
df['C3'] = df['C1'].fillna(df['C2'])
df
Out[483]:
C1 C2 C3
0 A NaN A
1 NaN B B
2 NaN C C
3 D NaN D
你也可以使用combine_first
:
df['C3'] = df['C1'].combine_first(df['C2'])
print(df)
# Output
C1 C2 C3
0 A NaN A
1 NaN B B
2 NaN C C
3 D NaN D
如果您的单元格包含空字符串而不是空值,请将它们临时替换为 NaN
:
df['C3'] = df['C1'].replace('', np.nan).combine_first(df['C2'])
print(df)
# Output
C1 C2 C3
0 A A
1 B B
2 C C
3 D D
我正在尝试使用 pandas 合并多项选择题列,这样我就可以对它们进行操作。我的问题的一个例子是:
C1 C2 C3
0 A A
1 B B
2 C C
3 D D
数据当前显示为 C1
和 C2
,但我需要将其合并到 1 列中,如 C3
中所示。
假设空单元格中为 NaN,一个选项是 bfill
第一列并复制它:
df['C3'] = df[['C1', 'C2']].bfill(axis=1)['C1']
这种方式可以扩展到任意数量的初始列。
输出:
C1 C2 C3
0 A NaN A
1 NaN B B
2 NaN C C
3 D NaN D
你可以试试 fillna
df['C3'] = df['C1'].fillna(df['C2'])
df
Out[483]:
C1 C2 C3
0 A NaN A
1 NaN B B
2 NaN C C
3 D NaN D
你也可以使用combine_first
:
df['C3'] = df['C1'].combine_first(df['C2'])
print(df)
# Output
C1 C2 C3
0 A NaN A
1 NaN B B
2 NaN C C
3 D NaN D
如果您的单元格包含空字符串而不是空值,请将它们临时替换为 NaN
:
df['C3'] = df['C1'].replace('', np.nan).combine_first(df['C2'])
print(df)
# Output
C1 C2 C3
0 A A
1 B B
2 C C
3 D D