【问题标题】:replace NAN or blank with string pandas dataframe用字符串 pandas 数据框替换 NAN 或空白
【发布时间】:2019-03-07 01:13:22
【问题描述】:

我有一个熊猫数据框。 在此数据框的其中一列 ('Q8') 中,一些行是空的。我想用字符串('ss')替换这些空单元格。 我想用一个条件来做这个替换。这个条件是如果('Q7')列中的字符串是('I am a student'),并且('Q8')列的这一行的单元格是空的,则替换('Q8')列的空单元格用'ss'。

这是我为它写的代码:

for xx in range(0,len(df['Q8'])):
    if df['Q8'][xx]==np.nan:
       if df['Q7'][xx]=='I am a student':
           df['Q8'][xx].replace('', 'ss', regex=True)

但它无法从第一个 if 中找到任何 np.nan!

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    改用掩码:

    df.loc[(df['Q7'] == 'I am a student') & (df['Q8'].isna()), 'Q8'] = 'ss'
    

    你也可以使用fillna:

    df.loc[df['Q7'] == 'I am a student', 'Q8'] = df.loc[df['Q7'] == 'I am a student', 'Q8'].fillna('ss')
    

    【讨论】:

    • @CFD 并注意使用 isna() 函数来查找缺失值,该函数适用于不同的数据类型。
    • 为什么要把'Q8'放在第一个方法的末尾?
    • @CFD 因为我们需要在两个维度上进行屏蔽:我们只想修改属于df[Q7] 具有值'I am a student' 的行的单元格df[Q8] 为空。
    • @CFD 同样,使用 .loc 索引器的正确语法是:df.loc[row_indexer,column_indexer]。
    猜你喜欢
    • 2015-01-06
    • 1970-01-01
    • 2017-04-04
    • 2015-08-04
    • 2016-10-16
    • 2018-01-31
    • 1970-01-01
    • 2018-11-08
    • 2017-02-28
    相关资源
    最近更新 更多