如何使用Pandas DataFrame迭代和修改行值

时间:2019-06-13 13:33:25

标签: python pandas

我想迭代和修改列“ B”下的值,这些列具有重复的值。

例如,如果我的数据框像

A   B    
1   null,null    
2   null    
3   null,null,null    
4   null,apples    
5   null,apples,null    
6   null,apples,apples

现在,我想修改它,以便根据B中的列值在数据框中创建一个新列C。它将执行以下操作:

  1. 仅用一个“ null”值替换所有多个“ Null”
  2. 如果出现了苹果一词,则我们将“苹果”存储在新列中,而不是空值。

所需的输出-

A   B                  C

1   null,null          null

2   null               null

3   null,null,null     null

4   null,apples         apples

5   null,apples,null    apples

6   null,apples,apples  apples

2 个答案:

答案 0 :(得分:3)

尝试

df['C'] = (df.B.str.split(',',expand=True)  # split the string and put them as columns
            .replace('null',np.nan)         # replace all the null with nan values
            .bfill(axis=1)[0]               # fill the nan to the left and choose the first column
            .fillna('null')                 # replace the nan values with string 'null'
          )

答案 1 :(得分:2)

使用get_dummies

s=df.B.str.get_dummies(',').drop('null',1)

df['New']=s.dot(s.columns).replace('','null')
df
Out[143]: 
   A                   B     New
0  1           null,null    null
1  2                null    null
2  3      null,null,null    null
3  4         null,apples  apples
4  5    null,apples,null  apples
5  6  null,apples,apples  apples