作者PTTOuO (五股毕书尽)
看板Python
标题[问题] 请问如何修改读进来csv的栏位资料
时间Sat Sep 30 18:44:43 2017
如题
这是我的data frame
http://i.imgur.com/USqiil5.jpg
我想要把Death year栏位资料为nan的变成0其他都变成1
import pandas as pd
mydata_csv = pd.read_csv('D:\Python\character-deaths.csv',sep = ',',encoding = 'utf-8')
mydata_csv
del mydata_csv['Book of Death']
del mydata_csv['Death Chapter']
if mydata_csv['Death Year'] == None:
mydata_csv['Death Year'] = 0
else:
mydata_csv['Death Year'] = 1
这个是我的程式码
到if那里就错误了QQ
-----
Sent from JPTT on my Asus ASUS_Z00AD.
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 106.1.234.184
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1506768286.A.DA3.html
1F:→ djshen: 也不说有什麽错误讯息 09/30 19:07
2F:推 johnny78615: import numpy as np 09/30 19:26
3F:→ johnny78615: if mydata_csv['Death Year'] == np.nan 09/30 19:26
4F:→ johnny78615: 这样试试 09/30 19:26
不行耶 他会出现跟我下面一样的错误讯息
5F:→ PTTOuO: ValueError: The truth value of a Series is ambiguous. 09/30 19:27
6F:→ PTTOuO: Use a.empty, a.bool(), a.item(), a.any() or a.all(). 09/30 19:27
※ 编辑: PTTOuO (106.1.234.184), 09/30/2017 19:39:10
7F:→ PTTOuO: 我改用 mydata_csv['Death Year'] = np.where(mydata_csv[ 09/30 19:40
8F:→ PTTOuO: 'Death Year']==None, 1, 0) 可以修改里面的资料了..但是 09/30 19:40
9F:→ PTTOuO: 通通变成0了QQ 09/30 19:40
是因为nan不是None吗..?
※ 编辑: PTTOuO (106.1.234.184), 09/30/2017 19:40:49
10F:推 Sunal: np.where(pd.isnull(df['Death Year']), 0, 1) 09/30 22:14
11F:推 fischcheng: goo.gl/xtV2SS 10/01 08:20
12F:→ fischcheng: python里面np.nan跟np.nan不相等。本来dataframe里的 10/01 08:21
13F:→ fischcheng: 也不是真的np.nan。 10/01 08:21
14F:推 fischcheng: 不然直接用fillna试试 10/01 08:23
15F:→ fischcheng: 其他用where不等於1取代。 10/01 08:24
16F:→ fischcheng: 打错,适用fillna填上0,然後其他用不等於0 填上1 10/01 08:24
17F:推 jiyu520: 先确定pd里面的资料格式 10/01 16:08
18F:→ jiyu520: 然後用最小单元(一格)先取代看看是否成功 10/01 16:09