gpt4 book ai didi

python - 根据列值输出多个文件 python pandas

转载 作者:行者123 更新时间:2023-11-30 22:55:54 26 4
gpt4 key购买 nike

我有一个示例 pandas 数据框:

import pandas as pd

df = {'ID': [73, 68,1,94,42,22, 28,70,47, 46,17, 19, 56, 33 ],
'CloneID': [1, 1, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 4, 4 ],
'VGene': ['64D', '64D', '64D', 61, 61, 61, 311, 311, 311, 311, 311, 311, 311, 311]}
df = pd.DataFrame(df)

它看起来像这样:

df
Out[7]:
CloneID ID VGene
0 1 73 64D
1 1 68 64D
2 1 1 64D
3 1 94 61
4 1 42 61
5 2 22 61
6 2 28 311
7 3 70 311
8 3 47 311
9 3 46 311
10 4 17 311
11 4 19 311
12 4 56 311
13 4 33 311

我想编写一个简单的脚本来将每个克隆ID输出到不同的输出文件。所以在这种情况下会有 4 个不同的文件。第一个文件将被命名为“CloneID1.txt”,它看起来像这样:

CloneID  ID   VGene
1 73 64D
1 68 64D
1 1 64D
1 94 61
1 42 61

第二个文件将命名为“CloneID2.txt”:

CloneID  ID  VGene
2 22 61
2 28 311

第三个文件将命名为“CloneID3.txt”:

CloneID  ID  VGene
3 70 311
3 47 311
3 46 311

最后一个文件是“CloneID4.txt”:

CloneID  ID VGene 
4 17 311
4 19 311
4 56 311
4 33 311

我在网上找到的代码是:

import pandas as pd
data = pd.read_excel('data.xlsx')

for group_name, data in data.groupby('CloneID'):
with open('results.csv', 'a') as f:
data.to_csv(f)

但它将所有内容输出到一个文件而不是多个文件。

最佳答案

您可以执行以下操作:

In [19]:
gp = df.groupby('CloneID')
for g in gp.groups:
print('CloneID' + str(g) + '.txt')
print(gp.get_group(g).to_csv())

CloneID1.txt
,CloneID,ID,VGene
0,1,73,64D
1,1,68,64D
2,1,1,64D
3,1,94,61
4,1,42,61

CloneID2.txt
,CloneID,ID,VGene
5,2,22,61
6,2,28,311

CloneID3.txt
,CloneID,ID,VGene
7,3,70,311
8,3,47,311
9,3,46,311

CloneID4.txt
,CloneID,ID,VGene
10,4,17,311
11,4,19,311
12,4,56,311
13,4,33,311

因此,我们在这里迭代 for g in gp.groups: 中的组,并使用它来创建结果文件路径名并在组上调用 to_csv ,以便以下内容应该适合您:

gp = df.groupby('CloneID')
for g in gp.groups:
path = 'CloneID' + str(g) + '.txt'
gp.get_group(g).to_csv(path)

实际上下面的内容会更简单:

gp = df.groupby('CloneID')
gp.apply(lambda x: x.to_csv('CloneID' + str(x.name) + '.txt'))

关于python - 根据列值输出多个文件 python pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37216230/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com