亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從沒有 Pandas 推斷標題的 csv 中讀取特定列

從沒有 Pandas 推斷標題的 csv 中讀取特定列

精慕HU 2022-07-12 15:42:59
我正在嘗試從pandas.read_csvJupyter Notebooks 中的 csv 文件中讀取特定列。我知道我感興趣的數據從哪一行開始,并使用skiprows關鍵字轉到包含列標簽的那一行。但是,即使我指定了要使用usecols的列,Pandas 也只會刪除列中的值,而不是列本身。因此,如果我test.csv看起來像這樣:*first 6 rows to be skipped*1,2,3,4,5,6a,b,c,d,e,fA,B,C,D,E,F片段(導入正確的模塊后)df = pandas.read_csv('test.csv', skiprows = 5, usecols = np.r_[0, 2:7])給1,2,3,4,5,6a,nan,c,d,e,fA,nan,C,D,E,F而不是想要的1,3,4,5,6a,c,d,e,fA,C,D,E,F我已通讀文檔pandas.read_csv,但沒有看到有關如何獲得所需結果的指示。ETA:我試圖讓 Pandas(或 Jupyter Noteooks)從數據框中排除列,而不僅僅是列包含的值。
查看完整描述

2 回答

?
Cats萌萌

TA貢獻1805條經驗 獲得超9個贊

我用您給我的示例進行了嘗試,并注意到您要讀取的列數是6,即1, 2, 3, 4, 5 and 6,而usecols您輸入的也使用6條目,即索引0, 2, 3, 4, 5 and 6。換句話說,您正在使用不存在的列,這就是它轉向NaN.


內容test.csv為:


1-5: *skip*

6:  1,  2,  3,  4,  5,  6

7:  a,  b,  c,  d,  e,  f

8:  A,  B,  C,  D,  E,  F

我用您給定的數據進行了嘗試,結果如下:


df = pandas.read_csv('test.csv', usecols = [0, 2:6], skiprows=5)

print(df)

產生:


   1  3  4  5  6

0  a  c  d  e  f

1  A  C  D  E  F

另一方面,您的原始代碼:


df = pandas.read_csv('test.csv', usecols = [0, 2:7], skiprows=5)

print(df)

產量:


   1  2  3  4  5    6

0  a  c  d  e  f  NaN

1  A  C  D  E  F  NaN

為此,您也可以刪除該列:


df.drop(['6'], axis=1, inplace=True)

df.columns = ['1', '3', '4', '5', '6']


查看完整回答
反對 回復 2022-07-12
?
撒科打諢

TA貢獻1934條經驗 獲得超2個贊

您可以嘗試類似下面的方法,在其中指定要保留的所有列。

df.loc[:, ["1", "3", "4", "5", "6"]]

或者您可以低于此將僅刪除指定的列。

df.drop(["2"], axis=1)


查看完整回答
反對 回復 2022-07-12
  • 2 回答
  • 0 關注
  • 148 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號