如何用另一列替换python数据框中的特定数据

时间:2016-10-15 07:46:12

标签: python-3.x pandas dataframe

我有以下问题:我在Python的Dataframe中有两列。第一个在其中有名称(字符串),第二个是整数,它对名称进行编码。代码解散了拼写变体。问题是,并非所有名称都被编码。我想制作第三列,其中有明确的名称,当第二行是NaN时,代码(作为字符串)有代码时。

以下是DataFrame的示例:

import pandas as pd
df = pd.DataFrame([['Meyer', 2], ['Mueller', 4], ['Radisch', math.nan], ['Meyer', 2],['Pavlenko', math.nan]])

这里有一个,我希望如何拥有它:

df = pd.DataFrame([['Meyer', 2, '2'], ['Mueller', 4, '4'], ['Radisch',math.nan ,'Radisch'], ['Meyer', 2, '2'],['Pavlenko',math.nan ,'Pavlenko']])

我有什么建议吗?我尝试了一个for循环,但它不起作用:

for d in range(0, len(df)):
    if not (math.isnan(df['ref'][d])):
        df.ix[d]['name2'] = df.ix[d]['ref']

1 个答案:

答案 0 :(得分:1)

您可以使用fillna()方法:

In [26]: df[2] = df[1].fillna(df[0])

In [27]: df
Out[27]:
          0    1         2
0     Meyer  2.0         2
1   Mueller  4.0         4
2   Radisch  NaN   Radisch
3     Meyer  2.0         2
4  Pavlenko  NaN  Pavlenko

Series.combine_first()方法:

In [28]: df[1].combine_first(df[0])
Out[28]:
0           2
1           4
2     Radisch
3           2
4    Pavlenko
Name: 1, dtype: object

阅读/学习的另一个重要资源 - Pandas: Working with missing data