我有以下问题:我在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']
答案 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
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