Python 读取文本文件并根据第一列中的唯一代码拆分为多个文件

Python 读取文本文件并根据第一列中的唯一代码拆分为多个文件,python,pandas,Python,Pandas,读取文本文件并根据文本文件第一列中的唯一代码拆分为多个文件-根据第一列中的唯一代码标识符,每个记录的列结构将不同 带逗号分隔符的文本文件 Sample input file structure "05555", "AB", "CC", "DD", "EE", "USA" "05555", "AB", "CC", "DD", "EE", "CA" "05555", "AB", "CC", "DD", "EE", "NY" "0666666", "AB", "CC", "DD", "EE", "NY

读取文本文件并根据文本文件第一列中的唯一代码拆分为多个文件-根据第一列中的唯一代码标识符,每个记录的列结构将不同

带逗号分隔符的文本文件

Sample input file structure
"05555", "AB", "CC", "DD", "EE", "USA"
"05555", "AB", "CC", "DD", "EE", "CA"
"05555", "AB", "CC", "DD", "EE", "NY"
"0666666", "AB", "CC", "DD", "EE", "NY", "123", "567", "888"
"0666666", "AB", "CC", "DD", "EE", "USA", "123", "567", "999"
我想根据第一列中的唯一代码标识符将上述文本文件拆分为文本文件

需要两个文件,数据如下

File1
"05555", "AB", "CC", "DD", "EE", "USA"
"05555", "AB", "CC", "DD", "EE", "CA"
"05555", "AB", "CC", "DD", "EE", "NY"

file2
"0666666", "AB", "CC", "DD", "EE", "NY", "123", "567", "888"
"0666666", "AB", "CC", "DD", "EE", "USA", "123", "567", "999"

注意:由于每个代码标识符的结构不同,我无法将数据读入pandas数据帧

尝试使用
groupby
for
循环,然后写入
csv
s:

for i, (_, group) in enumerate(df.groupby(df.iloc[:, 0]), 1):
    group.to_csv('File%s' % i)

问题包含两部分,首先读取行不平衡的文件,然后将数据帧拆分为子dfs

import pandas, io

data = io.StringIO('''"05555", "AB", "CC", "DD", "EE", "USA"
"05555", "AB", "CC", "DD", "EE", "CA"
"05555", "AB", "CC", "DD", "EE", "NY"
"0666666", "AB", "CC", "DD", "EE", "NY", "123", "567", "888"
"0666666", "AB", "CC", "DD", "EE", "USA", "123", "567", "999"
''')
df = pd.read_csv(data,sep=';',header=None)
s=df[0].str.split(',',expand=True)
s=s.apply(lambda x : x.str.strip(' "'),1)
for x , y in s.groupby(0):
    print(y.dropna(1))
    y.dropna(1).to_csv(str(x)+'.csv')
       0   1   2   3   4    5
0  05555  AB  CC  DD  EE  USA
1  05555  AB  CC  DD  EE   CA
2  05555  AB  CC  DD  EE   NY
         0   1   2   3   4    5    6    7    8
3  0666666  AB  CC  DD  EE   NY  123  567  888
4  0666666  AB  CC  DD  EE  USA  123  567  999

首先,我无法将数据读入dataframe,因为我得到了解析错误,因为每个代码标识符的列数都不相同。谢谢。data=io.StringIO您正在传递输入字符串,但我有大量的数据,这是从文件中读取数据的任何方法。@Pete这很难,因为数据不平衡,您可能不想按行读取,所以我将它们读入一列,然后使用itOk。谢谢你@WenNYoBen