我正在尝试根据条件选择来更新my_df,如:
my_df[my_df['group'] == 'A']['rank'].fillna('A+')
但是,这不是持久性...例如:my_df仍然具有NaN或NaT ...,而且我不确定如何就地执行此操作。请告知如何将更新持久化到my_df。
答案 0 :(得分:2)
创建布尔掩码并分配给过滤后的列rank
:
my_df = pd.DataFrame({'group':list('AAAABC'),
'rank':['a','b',np.nan, np.nan, 'c',np.nan],
'C':[7,8,9,4,2,3]})
print (my_df)
group rank C
0 A a 7
1 A b 8
2 A NaN 9
3 A NaN 4
4 B c 2
5 C NaN 3
m = my_df['group'] == 'A'
my_df.loc[m, 'rank'] = my_df.loc[m, 'rank'].fillna('A+')
print(my_df)
group rank C
0 A a 7
1 A b 8
2 A A+ 9
3 A A+ 4
4 B c 2
5 C NaN 3
答案 1 :(得分:2)
您需要将其分配回
my_df.loc[my_df['group'] == 'A','rank']=my_df.loc[my_df['group'] == 'A','rank'].fillna('A+')
答案 2 :(得分:1)