Pandas:关于如何设计数据框架和附加多个csv文件的想法



大家好,我是熊猫新手,

我有一组非常不方便的csv数据,像这样:

PMSN01001_PFT0_20181212_Crop_AGE.jpg_OCR.csv
PMSN01001_PFT0_20181212_Crop_GENDER.jpg_OCR.csv
PMSN01001_PFT0_20181212_Crop_HEIGHT.jpg_OCR.csv
PMSN01001_PFT0_20181212_Crop_WEIGHT.jpg_OCR.csv
...
PMSN01002_PFT0_20181212_Crop_AGE.jpg_OCR.csv
PMSN01002_PFT0_20181212_Crop_GENDER.jpg_OCR.csv
PMSN01002_PFT0_20181212_Crop_HEIGHT.jpg_OCR.csv
PMSN01002_PFT0_20181212_Crop_WEIGHT.jpg_OCR.csv
...

每个csv文件都有一个简单的字符串或数字,如下所示:

PMSN01001*AGE*.csv       54
PMSN01001*GENDER*.csv    male
PMSN01001*HEIGHT*.csv    171
PMSN01001*WEIGHT*.csv    65.4
PMSN01002*AGE*.csv       45
PMSN01002*GENDER*.csv    female
PMSN01002*HEIGHT*.csv    141
PMSN01002*WEIGHT*.csv    87

基本上,我想让整个数据框看起来像这样,其中文件名显示为行,值显示为列:

age    gender  height  weight      
PMSN*.csv        54     male    171    65.4
PMSN*.csv        52     female  181    54

我怎样才能做到这一点?

我认为关键的想法是使一个空的数据帧,然后使用glob.glob()读取所有的csv文件,并以某种方式使用open()处理每个文件名作为. 但我在这里兜圈子…

csv_path = mypath  
filenames = glob.glob(csv_path + '*.csv')

提前感谢!!

您可以使用下面的代码,其中header=0表示可以在读取CSV后将第一行分配为列名。

import pandas as pd
import glob
path = r'C:DRODCL_rawdata_files' # use your path
all_files = glob.glob(path + "/*.csv")
li = []
for filename in all_files:
df = pd.read_csv(filename, index_col=None, header=0)
li.append(df)
frame = pd.concat(li, axis=0, ignore_index=True)

如果你想合并行中的数据,那么使用它

csv_file_list = ["sample1.csv", "sample2.csv"]
list_of_dataframes = []
for filename in csv_file_list:
list_of_dataframes.append(pd.read_csv(filename))
merged_df = pd.concat(list_of_dataframes)
print(merged_df)

相关内容

  • 没有找到相关文章

最新更新