如何在无效的熊猫中合并2系列

时间:2018-08-12 15:45:17

标签: python python-3.x pandas

在数据框/表中,我有类似这样的数据

+----+-------+--------+
| 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中做到这一点

2 个答案:

答案 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)