为了账号安全,请及时绑定邮箱和手机立即绑定

将 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 关注
  • 126 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信