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

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

將 csv 導入 PANDAS 時,如何只導入其中包含指定字符串的列?

將 csv 導入 PANDAS 時,如何只導入其中包含指定字符串的列?

蠱毒傳說 2023-01-04 14:16:52
我有數千個 CSV 文件,每個文件包含數百列和數十萬行。對于速度,我只想將數據導入我需要的 PANDAS 數據幀。我可以使用單獨的元數據文件過濾我不需要的 CSV 文件,但我無法弄清楚如何刪除我不需要的列(在導入期間——我知道如何過濾數據框的列在它被導入之后,但就像我說的,我試圖避免導入不必要的數據)。假設我有以下 csv 文件:Date/Time  Apple Tart  Cherry Pie  Blueberry Pie  Banana Pudding  Tomato Soup1:00       2           4           7              6               52:00       3           5           4              5               83:00       1           4           7              4               4我只想導入包含文本“餅圖”以及“日期/時間”列的列。另請注意,我的所有 csv 文件的列名和列數都不同,因此“usecol”規范對我不起作用,因為我不知道要輸入的具體列名。
查看完整描述

2 回答

?
楊__羊羊

TA貢獻1943條經驗 獲得超7個贊

pandas read_csv中的usecols參數接受一個函數來過濾您感興趣的列:

import pandas as pd

from io import StringIO


data = """Date/Time  Apple Tart  Cherry Pie  Blueberry Pie  Banana Pudding  Tomato Soup

1:00       2           4           7              6               5

2:00       3           5           4              5               8

3:00       1           4           7              4               4"""



df = pd.read_csv(StringIO(data),

                 sep='\s{2,}',

                 engine='python',

                 #this is the key part of the code for your usecase

                 #looks for columns that contain Pie or Date/Time

                 #and returns only those columns

                 #quite extensible as well, since it accepts a function

                 usecols = lambda x: ("Pie" in x) or ("Date/Time" in x) )

df



Date/Time   Cherry Pie  Blueberry Pie

0   1:00    4   7

1   2:00    5   4

2   3:00    4   7


查看完整回答
反對 回復 2023-01-04
?
HUWWW

TA貢獻1874條經驗 獲得超12個贊

您可以在將 read_csv() 用作列表時指定列名,例如:

df=pd.read_csv('fila.csv',names=['columnName#1','columnName3'])

看我沒有使用“columnName2”。


查看完整回答
反對 回復 2023-01-04
  • 2 回答
  • 0 關注
  • 178 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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