gpt4 book ai didi

python - Pandas 根据列值将数据框拆分为多个 csv

转载 作者:行者123 更新时间:2023-12-04 22:40:05 25 4
gpt4 key购买 nike

我有一个问题很similar to this one但我需要更进一步,将拆分的数据帧保存到 csv。

import pandas as pd
import numpy as np
import os

df = pd.DataFrame({ 'CITY' : np.random.choice(['PHOENIX','ATLANTA','CHICAGO', 'MIAMI', 'DENVER'], 1000),
'DAY': np.random.choice(['Monday','Tuesday','Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'], 1000),
'TIME_BIN': np.random.randint(1, 86400, size=1000),
'COUNT': np.random.randint(1, 700, size=1000)})

df['TIME_BIN'] = pd.to_datetime(df['TIME_BIN'], unit='s').dt.round('10min').dt.strftime('%H:%M:%S')
print(df)

OUTPUT:
CITY COUNT DAY TIME_BIN
0 ATLANTA 476 Thursday 12:20:00
1 PHOENIX 50 Saturday 15:40:00
2 MIAMI 250 Friday 08:20:00
3 CHICAGO 358 Monday 15:40:00
4 PHOENIX 217 Thursday 22:10:00
5 MIAMI 12 Thursday 21:40:00
6 DENVER 22 Friday 10:30:00
7 CHICAGO 645 Sunday 23:40:00
8 MIAMI 188 Sunday 08:40:00

我想为每个城市制作一个单独的数据框并将其保存为 .csv。下面的代码有效,但我如何在无需明确说明每个城市的情况下以 Pythonic 方式进行操作?真实数据集大约有 20 个城市,所以我不想重复这 20 次。我认为下面的代码可以使用 for 循环在 1-2 行中完成,但我不知道它会是什么样子。类似于“对于 df['CITY'] 中的城市”
df_phoenix = df[df['CITY'] == "PHOENIX"]
df_atlanta = df[df['CITY'] == "ATLANTA"]
df_chicago = df[df['CITY'] == "CHICAGO"]
df_phoenix.to_csv(os.getcwd() + "/data_phoenix.csv")
df_atlanta.to_csv(os.getcwd() + "/data_atlanta.csv")
df_chicago.to_csv(os.getcwd() + "/data_chicago.csv")

最佳答案

我想你需要 groupby 使用自定义 lambda 函数或循环:

f = lambda x: x.to_csv(os.getcwd() + "/data_{}.csv".format(x.name.lower()), index=False)
df.groupby('CITY').apply(f)
for i, x in df.groupby('CITY'):
x.to_csv(os.getcwd() + "/data_{}.csv".format(i.lower()), index=False)

通过评论编辑,谢谢@Anton vBR:
for i, x in df.groupby('CITY'):
p = os.path.join(os.getcwd(), "data_{}.csv".format(i.lower()))
x.to_csv(p, index=False)

关于python - Pandas 根据列值将数据框拆分为多个 csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49050455/

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