【问题标题】:How to replace specific data in a python dataframe with another column如何用另一列替换python数据框中的特定数据
【发布时间】:2016-10-15 07:46:12
【问题描述】:

我有以下问题:我的 Python 数据框中有两列。第一个包含名称(字符串),第二个是整数,用于编码名称。该代码消除了拼写变体。问题是,并非所有名称都被编码。我想制作第三列,其中有明确的名称,当第二行是 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']

【问题讨论】:

    标签: python-3.x pandas dataframe


    【解决方案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

    【讨论】:

    • @EricRadisch,不客气。如果您认为它已经回答了您的问题,请考虑accepting/upvoting 一个答案
    猜你喜欢
    • 1970-01-01
    • 2020-04-14
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 2021-11-06
    • 2021-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多