我正在做一个解析csv文件的项目。在当前状态下,用户必须从已知列名中输入一个唯一的字符串来设置标题行,既用于解析列选择,也用于填充列以保留字段。
我的目标是从用户端删除该步骤,并自动化该过程,而不管标题行实际位于何处。我对此做了一个基本的、硬编码的解决方案。。。但我想知道如何才能实现一种更Python化/自动化的方式,而不依赖于硬编码的值和逻辑。
以下是我的测试数据帧的最低版本:
0 | A | BC | D | >E | F | |
---|---|---|---|---|---|---|
1 | 这只是一个占位符,作用就像填充了第一个单元格 | |||||
2 | ||||||
3 | 这也是一个占位符 | |||||
5 | ||||||
7 | 文本 | 布尔 | 类型活动||||
8 | A。Lorem ipsum悲哀坐amet,consectetur adipiscing elit | 真 | t1 | 是 | ||
9 | C.Nulla quis nisi vitae ante eleifend porta。D.Donec tempor felis nec lectus ultricies fringilla | 错误 |
在玩了一整天代码之后,我想我找到了一个有效的解决方案。如果有人愿意在他们的一端为我测试它,我将感谢您的反馈!
import os, sys
import pandas as pd
import numpy as np
docs = os.listdir() #folder path where files are saved
os.chdir()
for file in docs:
rownum=0
rowindx=0
cols=[]
if file.endswith('csv'):
df = pd.read_csv(file, header = None)
for row in df.iterrows():
rownum+=1
rowindx=rownum-1
col_count=0
i=0
while i < len(df.columns):
if df.isnull().loc[rowindx, df.columns[i]]:
col_count=col_count
else:
col_count+=1
i+=1
if col_count < len(df.columns):
cols.append(f'row {rownum} NOPE')
elif col_count == len(df.columns):
cols.append(f'row matched')
match = 'row matched'
hdr_pos = cols.index(match)
print(f'Header Index: {hdr_pos} n Row: {hdr_pos+1}')
对于目标文件夹中的每个csv,将打印:
标题索引:[Index#]
行:[Index#+1]