使用预定义的命名约定将单个pandas数据帧划分为多个csv文件

2024-04-25 16:53:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我面临一个问题,我必须加载一个巨大的CSV文件,根据列中的唯一值将文件拆分为多个文件,并以预定义的名称模式将文件输出到多个CSV。在

原始CSV的示例如下。在

date     place  type    product value   zone
09/10/16 NY     Zo      shirt   19       1
09/10/16 NY     Mo      jeans   18       2
09/10/16 CA     Zo      trouser 13       3
09/10/16 CA     Co      tie     17       4
09/10/16 WA     Wo      bat     11       1
09/10/16 FL     Zo      ball    12       2
09/10/16 NC     Mo      belt    13       3
09/10/16 WA     Zo      buckle  15       4
09/10/16 WA     Co      glass   16       1
09/10/16 FL     Zo      cup     19       2

我必须根据地点、类型和区域将这个巨大的pandas数据帧归档为多个pandas数据帧,并且输出数据帧应使用命名约定place_type_产品转换为多个csv文件_区域.csv. 在

我现在得到的代码如下。在

^{pr2}$

它输出标题为1.csv、2.csv等的csv文件。如何在函数中创建一个循环,以获得命名约定为NY_zo_shirt_1.csv、CA_zo_trouser_3.csv等。我应该创建一个字典来存储所有的键吗?在

提前谢谢。在


Tags: 文件csv数据typeplacecamoco
1条回答
网友
1楼 · 发布于 2024-04-25 16:53:10

在这里-

# Part 1
places = df['place'].unique()
types = df['type'].unique()
products = df['product'].unique()
zones = df['zone'].unique()

# Part 2
import itertools
combs = list(itertools.product(*[places, types, products, zones]))

#Part 3
for comb in combs:
    place, type_, prod, zone = comb
    df_subset = df[(df['place']==place) & (df['type']==type_) & (df['product']==prod) & (df['zone']==zone)]
    if df_subset.shape[0] > 0:
        df_subset.to_csv('temp1/{}_{}_{}_{}.csv'.format(place, type_, prod, zone), index=False)

输出

enter image description here

相关问题 更多 >