[問題] 請問如何修改讀進來csv的欄位資料

看板Python作者 (五股畢書盡)時間8年前 (2017/09/30 18:44), 8年前編輯推噓5(5013)
留言18則, 6人參與, 8年前最新討論串1/1
如題 這是我的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://www.ptt.cc/bbs/Python/M.1506768286.A.DA3.html

09/30 19:07, 8年前 , 1F
也不說有什麼錯誤訊息
09/30 19:07, 1F

09/30 19:26, 8年前 , 2F
import numpy as np
09/30 19:26, 2F

09/30 19:26, 8年前 , 3F
if mydata_csv['Death Year'] == np.nan
09/30 19:26, 3F

09/30 19:26, 8年前 , 4F
這樣試試
09/30 19:26, 4F
不行耶 他會出現跟我下面一樣的錯誤訊息

09/30 19:27, 8年前 , 5F
ValueError: The truth value of a Series is ambiguous.
09/30 19:27, 5F

09/30 19:27, 8年前 , 6F
Use a.empty, a.bool(), a.item(), a.any() or a.all().
09/30 19:27, 6F
※ 編輯: PTTOuO (106.1.234.184), 09/30/2017 19:39:10

09/30 19:40, 8年前 , 7F
我改用 mydata_csv['Death Year'] = np.where(mydata_csv[
09/30 19:40, 7F

09/30 19:40, 8年前 , 8F
'Death Year']==None, 1, 0) 可以修改裡面的資料了..但是
09/30 19:40, 8F

09/30 19:40, 8年前 , 9F
通通變成0了QQ
09/30 19:40, 9F
是因為nan不是None嗎..? ※ 編輯: PTTOuO (106.1.234.184), 09/30/2017 19:40:49

09/30 22:14, 8年前 , 10F
np.where(pd.isnull(df['Death Year']), 0, 1)
09/30 22:14, 10F

10/01 08:20, 8年前 , 11F
goo.gl/xtV2SS
10/01 08:20, 11F

10/01 08:21, 8年前 , 12F
python裡面np.nan跟np.nan不相等。本來dataframe裡的
10/01 08:21, 12F

10/01 08:21, 8年前 , 13F
也不是真的np.nan。
10/01 08:21, 13F

10/01 08:23, 8年前 , 14F
不然直接用fillna試試
10/01 08:23, 14F

10/01 08:24, 8年前 , 15F
其他用where不等於1取代。
10/01 08:24, 15F

10/01 08:24, 8年前 , 16F
打錯,適用fillna填上0,然後其他用不等於0 填上1
10/01 08:24, 16F

10/01 16:08, 8年前 , 17F
先確定pd裡面的資料格式
10/01 16:08, 17F

10/01 16:09, 8年前 , 18F
然後用最小單元(一格)先取代看看是否成功
10/01 16:09, 18F
文章代碼(AID): #1PptMUsZ (Python)