首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Pandas:将DF拆分为多个csv

Pandas:将DF拆分为多个csv
EN

Stack Overflow用户
提问于 2021-03-17 12:35:59
回答 2查看 90关注 0票数 2

我有一个CSV文件,如下所示:

代码语言:javascript
运行
复制
|100|Header1|Header2|
|120| xxx   | xxx   |
|120| yyy   | yyy   |
|120| zzz   | zzz   |
|200|Header3|Header4|
|220| xxx   | xxx   |
|220| yyy   | yyy   |
|220| zzz   | zzz   |
|300|Header5|Header6|
|320| xxx   | xxx   |
|320| yyy   | yyy   |
|320| zzz   | zzz   |

所有的头文件都从一系列的100开始,它们需要被拆分到各自的csv文件中。因此,在这种情况下,将有3个csv文件,其中一个具有行100和120s,第二个csv文件具有200和220s,第三个具有300和320s。

第100、200和300行表示新表的开始。有没有一种有效的方法可以在pandas中做到这一点,而不必遍历并在遇到100、200等情况下创建新的csv文件?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-17 13:25:29

使用groupby

代码语言:javascript
运行
复制
df = pd.read_csv('test.txt',sep = '|',header=None)
df.drop([0,4],axis = 1,inplace = True)
for i,sd in df.groupby(df[1]//100):
    sd.to_csv(f'test{i*100}.csv',index=False,header=False)

test.txt包含OP提供的原始数据:

代码语言:javascript
运行
复制
|100|Header1|Header2|
|120| xxx   | xxx   |
|120| yyy   | yyy   |
|120| zzz   | zzz   |
|200|Header3|Header4|
|220| xxx   | xxx   |
|220| yyy   | yyy   |
|220| zzz   | zzz   |
|300|Header5|Header6|
|320| xxx   | xxx   |
|320| yyy   | yyy   |
|320| zzz   | zzz   |

输出:

它将创建3个文件test100.csvtest200.csvtest300.csv

test100.csv

代码语言:javascript
运行
复制
100,Header1,Header2
120, xxx   , xxx   
120, yyy   , yyy   
120, zzz   , zzz 

test200.csv

代码语言:javascript
运行
复制
200,Header3,Header4
220, xxx   , xxx   
220, yyy   , yyy   
220, zzz   , zzz   

test300.csv

代码语言:javascript
运行
复制
300,Header5,Header6
320, xxx   , xxx   
320, yyy   , yyy   
320, zzz   , zzz   
票数 3
EN

Stack Overflow用户

发布于 2021-03-17 13:55:31

我会考虑使用纯python方法。

代码语言:javascript
运行
复制
with open('test.csv') as fh:
    current_file_handle = None
    current_file_name = None
    for line in fh.readlines():
        p0 = line.find('|') + 1
        p1 = line[p0:].find('|') + p0
        if current_file_name != f'{line[p0]}00':
            current_file_name = line[p0:p1]
            current_file_handle = open(f'test_{current_file_name}.csv', 'w')
        current_file_handle.write(line)
    current_file_handle.close()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66667053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档