我想做的是在包含70多个列的超大型CSV文件的1列中搜索字符串。
找到该字符串所在的行后,我只想显示一组特定列中的数据。
这就是我不断给我的错误
import pandas as pd
df = pd.read_csv('output.csv')
#columns I would like to display data from
df[df.iloc[0,1,2,11,12,14]]
#search for specific term in specific column
df.loc[df['COLUMN NAME'].str.contains('SEARCH TERM')]
0,1,2,11,12,14是我要显示的列的索引号。其他列包含我不关心的数据。
import pandas as pd
df = pd.read_csv('output.csv')
df.loc[df['COLUMN NAME'].str.contains('SEARCH TERM')]
上面的代码在找到字符串时为我提供了所有列的所有数据,但是对于这个简单的应用程序来说,它是无用的数据。
这感觉像是一个超级简单的修复程序,但我似乎无法弄清楚。
在此先感谢您的帮助!
答案 0 :(得分:0)
您可以使用 usecol panda.read_csv构造函数参数来定义所需的列。 Wiki: read_csv
usecols:类似于列表或可调用的列表,默认为无
返回列的子集。如果类似列表,则所有元素必须 位置(即文档列中的整数索引)或 与用户在以下位置提供的列名称相对应的字符串 名称或从文档标题行推断出的名称。例如,一个 有效的类似列表的usecols参数应为[0,1,2]或['foo','bar', “巴兹”]。元素顺序被忽略,因此usecols = [0,1]与[1, 0]。从保留元素顺序的数据实例化DataFrame 使用pd.read_csv(data,usecols = ['foo','bar'])[['foo','bar']]用于 以['foo','bar']顺序或pd.read_csv(data,usecols = ['foo', 'bar'])[[['bar','foo']]用于['bar','foo']顺序。
如果可调用,则会根据 列名,返回可调用函数计算结果的名称 真正。一个有效的可调用参数的示例是lambda x: ['AAA','BBB','DDD']中的x.upper()。使用此参数会导致 解析时间更快,内存使用量更低。
因此,在您的情况下,它将是:
import pandas as pd
df = pd.read_csv(
'output.csv',
usecols=[0,1,2,11,12,14]
)
df.loc[df['COLUMN NAME'].str.contains('SEARCH TERM')]
您可以提供列ID数组或名称数组
希望有帮助