服务器df能否修改为0,关于python 2.7:df.fillna(0)命令不会将NaN值替换为0

我正在尝试将下面代码中生成的NaN值替换为0。我不明白下面的内容有什么用。它仍然保持NaN值。

df_pubs=pd.read_sql("select Conference, Year, count(*) as totalPubs from publications where year>=1991 group by conference, year", db)

df_pubs['Conference'] = df_pubs['Conference'].str.encode('utf-8')

df_pubs = df_pubs.pivot(index='Conference', columns='Year', values='totalPubs')

df_pubs.fillna(0)

print df_pubs

print df produces此:

Year                                                                                       1991  \

Conference

223

10th Anniversary Colloquium of UNU/IIST                                                     NaN

15. WLP                                                                                     NaN

1999 ACM SIGMOD Workshop on Research Issues in Data Mining and Knowledge Discovery          NaN

25 Years CSP                                                                                NaN

你需要df_pubs = df_pubs.fillna(0)。fillna不修改原始数据帧。

大多数熊猫操作默认返回一个副本,有些操作有参数inplace=True

您需要分配EDOCX1[0]的结果:

df_pubs = df_pubs.fillna(0)

或通过参数inplace=True:

df_pubs.fillna(0, inplace=True)

查看文档

您可以将代码修改为:

df_pubs = df_pubs.pivot(index='Conference', columns='Year', values='totalPubs').fillna(0)

这是可行的,但在这里是否可读fillna是有争议的。

我试图使用:df_pubs.to_sql('conferences_pubs', db, flavor='sqlite', if_exists='replace', index=True)将df保存为SQL表,当index=False工作时,它可以工作,但我需要将会议名称(即索引)添加为列,因此当我将index=true时,它会给出一个错误:ProgrammingError: You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory = str)。强烈建议您将应用程序切换为Unicode字符串。你知道为什么会这样吗?

不知道,但听起来您的数据库编码没有设置为接受UTF-8,您能更改这个吗?老实说,我对这个话题不太了解,所以如果你还坚持下去,我会提出一个新问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值