我有一个包含多列的数据集,但只关注一个称为“ VAL”的列。此列中的每个值都介于0到4之间,因此我想根据这些重复值将其分为5个单独的数据帧,然后将每个数据帧导出到单独的csv文件中。
我已经能够使用熊猫对数字进行排序,但是现在我需要将值分成较小的数据集,同时要记住我有多个文件,所以我想这样做是为了实现for循环?
这是我目前的输出
A B C D E F G VAL FILE
954 380 158 166 431 201 769 0 001.csv
1142 348 203 962 0 878 1023 0 001.csv
1688 279 229 0 488 1007 0 0 001.csv
4792 371 420 29 372 0 745 0 001.csv
2106 352 76 196 388 0 695 0 001.csv
... ... ... ... ... ... ... ...
5634 441 283 277 788 45 585 4 001.csv
827 672 606 24 1023 463 742 4 001.csv
6703 324 203 0 623 214 726 4 001.csv
9056 604 398 0 981 0 633 4 001.csv
0 574 338 144 942 608 793 4 001.csv
这就是我想要的样子
A B C D E F G VAL FILE
954 380 158 166 431 201 769 0 val_0.csv
1142 348 203 962 0 878 1023 0 val_0.csv
1688 279 229 0 488 1007 0 0 val_0.csv
4792 371 420 29 372 0 745 0 val_0.csv
2106 352 76 196 388 0 695 0 val_0.csv
A B C D E F G VAL FILE
5634 441 283 277 788 45 585 4 val_4.csv
827 672 606 24 1023 463 742 4 val_4.csv
6703 324 203 0 623 214 726 4 val_4.csv
9056 604 398 0 981 0 633 4 val_4.csv
0 574 338 144 942 608 793 4 val_4.csv
答案 0 :(得分:0)
这里有一个示例,其中C列类似于您的VAL列:
from io import StringIO
import pandas as pd
data = """
A,B,C
5d8b,N,1
5d8b,A,1
5d8b,B,2
5d8b,C,2
5d8b,Y,3
5d8b,X,3
"""
df = pd.read_csv(StringIO(data), sep=',')
for key, group in df.groupby('C'):
group.to_csv(f'df_{key}.csv', index=False)
答案 1 :(得分:0)
更改文件以匹配预期的输出。
df = pd.read_clipboard(sep'\s+')
df['FILE'] = 'val_' + df['VAL'] + '.csv'
然后对VAL进行分组并编写您的csv
for x,y in df.groupby('VAL'):
file_name = y['FILE'].unique().tolist()[0]
y.to_csv(f"{file_name}",index=False)
这会根据您的数据为我写两个csv。
for x,y in df.groupby('VAL'):
print(y)
A B C D E F G VAL FILE
0 954 380 158 166 431 201 769 0 val_0.csv
1 1142 348 203 962 0 878 1023 0 val_0.csv
2 1688 279 229 0 488 1007 0 0 val_0.csv
3 4792 371 420 29 372 0 745 0 val_0.csv
4 2106 352 76 196 388 0 695 0 val_0.csv
A B C D E F G VAL FILE
6 5634 441 283 277 788 45 585 4 val_4.csv
7 827 672 606 24 1023 463 742 4 val_4.csv
8 6703 324 203 0 623 214 726 4 val_4.csv
9 9056 604 398 0 981 0 633 4 val_4.csv
10 0 574 338 144 942 608 793 4 val_4.csv