在数据框/表中,我有类似这样的数据
+----+-------+--------+
| id | name1 | name2 |
+----+-------+--------+
| 0 | John | |
| 1 | | Nathan |
| 2 | Andy | |
+----+-------+--------+
我想将它们合并到另一个列中,在其中任何一个名称列中都填充空或空之类的东西
+----+-------+--------+--------------+
| id | name1 | name2 | merged_names |
+----+-------+--------+--------------+
| 0 | John | | John |
| 1 | | Nathan | Nathan |
| 2 | Andy | | Andy |
+----+-------+--------+--------------+
如何在pandas Dataframe中做到这一点
答案 0 :(得分:2)
如果空单元格实际上是空字符串,则可以这样做:
df['merged_names'] = df1['name1'] + df2['name2']
如果空白单元格为np.nan
,则可以通过以下方式使用replace
:
df['merged_names'] = df1['name1'].replace(np.nan, '') + df2['name2'].replace(np.nan, '')
答案 1 :(得分:2)
您可以使用pd.Series.combine_first
:
df = pd.DataFrame({'id': [0, 1, 2],
'name1': ['John', np.nan, 'Andy'],
'name2': [np.nan, 'Nathan', np.nan]})
df['merged'] = df['name1'].combine_first(df['name2'])
print(df)
id name1 name2 merged
0 0 John NaN John
1 1 NaN Nathan Nathan
2 2 Andy NaN Andy
如果您的值是空字符串而不是NaN
,则可以首先通过以下方式转换为NaN
:
df = df.replace('', np.nan)