gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 22:04:50 25 4
gpt4 key购买 nike

我面临一个问题,我必须加载一个巨大的 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_product_zone.csv 转换为多个 csv 文件。

到目前为止我得到的代码如下。

def list_of_dataframes(df, col_list):
df_list = [df]
name_list = []
for _, i in enumerate(col_list):
df_list, names = _split_dataframes(df_list, i)

file_name = zip(name_list, df)
_ = dict(zip(names, df))
for k, v in _:
v.to_csv("{0}.csv".format(k))

Print("CSV files created")
return df, file_name


def _split_dataframes(df_list, col):
names = []
dfs = []
for df in df_list:
for c in df[col].unique():
dfs.append(df.loc[df[col] == c])
names.append(c)
return dfs, names

list_of_dataframes(df,['place','type','zone']

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

提前致谢。

最佳答案

这里是 -

# 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

关于python - 使用预定义的命名约定将单个 pandas 数据框划分为多个 csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53166308/

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