futui 发表于 2022-12-13 10:36:36

大神帮我看下,为什么最后一句不起作用,要怎么解决?谢谢

本帖最后由 futui 于 2022-12-13 10:49 编辑

在阿奇大师帮助下,利用字典,找到了Be列数字对应的字母,结果如下:
data = [,
,
,
,
,
]
df = pd.DataFrame(data = data,columns=['Ae','Be','Ce','De'])

dig_dic = {0: 'Ae', 1: 'Be', 2: 'Ce', 3: 'De', 'nan': ''}
#新增字母列
df['Be'].fillna(' ',inplace=True)
df['zm'] = df['Be'].replace(dig_dic)
df.loc =='','zm'] = df.loc =='','De'].replace(dig_dic)

#由于Be列第三行是空的,想用De列对应行的数字代替
#下面是我自己加的一句,意思是:当Be列为空时,就用De列的数字替代,找到对应的字母
#这里应该是找到的2,对应字母为Ce,但这句为什么不起作用?

#df.loc =='','zm'] = df.loc =='','De'].replace(dig_dic)   


请大神帮忙看下,或者用什么别的方法达到同样的结果。谢谢!

futui 发表于 2022-12-13 12:27:05

本帖最后由 futui 于 2022-12-13 12:28 编辑

df['zm'] = np.where(~df['Be'].isnull(), df['Be'].replace(dig_dic),df['De'].replace(dig_dic))

解决!

阿奇_o 发表于 2022-12-13 15:09:36

本帖最后由 阿奇_o 于 2022-12-13 15:18 编辑

傻孩子,应该是你 loc 的过滤条件,写错了而已,你自己先把空值替换成了 一个空格,过滤时就要过滤一个空格,而不是''这个空字符。。

另外注意,空值 是不能做等值判断的。但空格和空字符属于一般的字符串,是可以进行等值判断的。
页: [1]
查看完整版本: 大神帮我看下,为什么最后一句不起作用,要怎么解决?谢谢