选择具有不同标头python的csv / df中的特定列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了选择具有不同标头python的csv / df中的特定列相关的知识,希望对你有一定的参考价值。

我有几个包含相同信息变体的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

我本可以跳过不包含关键词的行,但有时会出现在“指令”中的关键词放在标题上方的不同位置。

有没有'熊猫'可以使用特定信息来识别标题列的方法?除了依赖标题信息和/或标题数量之外,还有更好的解决方法吗?

答案

所以基本上你的字符串存储在第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的行

以上是关于选择具有不同标头python的csv / df中的特定列的主要内容,如果未能解决你的问题,请参考以下文章

在 Spark 中从具有不同标头的 CSV 文件形成 DataFrame

Python Spark-如何将空 DataFrame 输出到 csv 文件(仅输出标头)?

是否可以以相同或不同的顺序将具有相同标题或标题子集的多个 csv 文件读取到 spark 数据帧中?

S3 选择 CSV 中的检索标头

Python for DF 基于 Excel 和 CSV 的不同结果 pandas Groupby

读取具有不同列顺序的文件