我有几个包含相同信息变体的CSV文件。 我想根据关键字从每个列中提取列。但是,每个文件的标题不一定从第1行开始,因此很难识别'skiprows ='的静态变量。
以下是CSV的一些示例
CSV1
Here are the instructions that you should follow.
Follow them closely, OK, to define the Type and Place.
Type Number Place Exists
cat 2 home yes
dog 2 field yes
fish 3 sea yes
CSV2
.
I know have this type of information.
This is not easy to define when the location and style are the same.
Animal Style Quantity Location Exists
horse 3 field yes
lion 2 safari no
tiger 3 jungle yes
CSV3
Number Local Species
2 home rabbit
3 tank turtle
3 sea shark
如果'CSV'都有一个容易识别的标题,我会遵循的“熊猫”方法如下:
colFilters = ['number','local','species','style','quantity','location','type','number','place']
df = read_CSV(CSV1,skip_blanks_rows=True)
df.columns = map(str.lower, df.columns)
df = df.filter(regex='|'.join(colFiltersFilters),axis=1)
df.head
我本可以跳过不包含关键词的行,但有时会出现在“说明”中的关键词位于标题上方的不同位置。
'pandas'是否有办法使用特定信息来识别标题列?除了依赖标题信息和/或标题数量之外,还有更好的解决方法吗?
答案 0 :(得分:0)
所以基本上你的字符串存储在第1列中?如果在读入数据时删除所有NULL值,该怎么办?之后,您可以使用第一行重命名列标题。
import pandas as pd
import numpy as np
df = pd.read_csv(r'CSV1',header=None)
df=df.dropna()
df=df.rename(columns=df.iloc[0])
df=df.drop(df.index[[0]])
df.head(10)
如果您在任何其他列中缺少值,那么我将删除包含'。'的所有行。或者删除所有超过2个缺失值的行