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