如何根据输入栏分别保存 csv
How can I save csv separately based on it's entry column
我试图在从 MONGODB 中提取数据帧后保存 csv 文件。
当我创建数据框时,它会根据其日期列生成每个数据框。
此外,更多数据框有一列 id
,其中有 31 个不同的 ID 号。
我想单独保存我的 csv,在 csv 名称中包含 ID 号。
我之前使用 pandas:
以这种方式保存我的数据框
data = pd.DataFrame(energy_data)
for each_id in id_list:
item = int(each_id)
data.to_csv(os.path.join(dir, f'test_id_{item}.csv'), sep=',' )
# data is a dataframe I get it from MongoDB.
我的数据框如下所示(打印时显示 31 个单独的数据框):
datetimeAt id. total
2022-01-01 23:00:00 10121 1088030
.................
.................
datetimeAt id. total
2022-01-09 21:00:00 10023 1077030
................
................
datetimeAt id. total
2022-01-16 20:00:00 10024 1058030
..............
.................
datetimeAt id. total
2022-01-15 15:00:00 10012 108030
...................
当我 运行 我的代码时,我能够获得 31 个 csv 文件,但每个 csv 包含相同的数据信息,即当我从提取函数打印时的第一个数据帧。
所以我想根据 ID 号保存我的 csv,如下所示,以及与其 ID 号对应的信息。
test_id-10121.csv
test_id-10023.csv
test_id-10024.csv
test_id-10012.csv
.................
我能得到一些帮助吗?
谢谢
对于每个 id,您需要从主数据框中分离出一组数据并单独保存。
为此,您可以使用类似这样的东西。
for each_id in id_list:
item = int(each_id)
data_for_id = data[data['id.'] == item]
data_for_id.to_csv(os.path.join(dir, f'test_id_{item}.csv'), sep=',' )
Pandas 擅长仅选择相关信息。您只需要做:
for each_id in id_list:
item = int(each_id)
data[data[id] == item].to_csv(os.path.join(dir, f'test_id_{item}.csv'), sep=',' )
可能是:
...
data[data[id] == each_id].to_csv(os.path.join(dir, f'test_id_{item}.csv'), sep=',' )
如果 id
列不是数字...
但是如果你有一个大数据帧和相当多的 id 值,它就不会有效,因为你将为每个 id 值重复提取过程。 Pandas 方法是使用 grouby
:
for item, df_item in df.groupby('id'):
df_item.to_csv(os.path.join(dir, f'test_id_{item}.csv'), sep=',' )
我试图在从 MONGODB 中提取数据帧后保存 csv 文件。
当我创建数据框时,它会根据其日期列生成每个数据框。
此外,更多数据框有一列 id
,其中有 31 个不同的 ID 号。
我想单独保存我的 csv,在 csv 名称中包含 ID 号。
我之前使用 pandas:
以这种方式保存我的数据框data = pd.DataFrame(energy_data)
for each_id in id_list:
item = int(each_id)
data.to_csv(os.path.join(dir, f'test_id_{item}.csv'), sep=',' )
# data is a dataframe I get it from MongoDB.
我的数据框如下所示(打印时显示 31 个单独的数据框):
datetimeAt id. total
2022-01-01 23:00:00 10121 1088030
.................
.................
datetimeAt id. total
2022-01-09 21:00:00 10023 1077030
................
................
datetimeAt id. total
2022-01-16 20:00:00 10024 1058030
..............
.................
datetimeAt id. total
2022-01-15 15:00:00 10012 108030
...................
当我 运行 我的代码时,我能够获得 31 个 csv 文件,但每个 csv 包含相同的数据信息,即当我从提取函数打印时的第一个数据帧。
所以我想根据 ID 号保存我的 csv,如下所示,以及与其 ID 号对应的信息。
test_id-10121.csv
test_id-10023.csv
test_id-10024.csv
test_id-10012.csv
.................
我能得到一些帮助吗?
谢谢
对于每个 id,您需要从主数据框中分离出一组数据并单独保存。
为此,您可以使用类似这样的东西。
for each_id in id_list:
item = int(each_id)
data_for_id = data[data['id.'] == item]
data_for_id.to_csv(os.path.join(dir, f'test_id_{item}.csv'), sep=',' )
Pandas 擅长仅选择相关信息。您只需要做:
for each_id in id_list:
item = int(each_id)
data[data[id] == item].to_csv(os.path.join(dir, f'test_id_{item}.csv'), sep=',' )
可能是:
...
data[data[id] == each_id].to_csv(os.path.join(dir, f'test_id_{item}.csv'), sep=',' )
如果 id
列不是数字...
但是如果你有一个大数据帧和相当多的 id 值,它就不会有效,因为你将为每个 id 值重复提取过程。 Pandas 方法是使用 grouby
:
for item, df_item in df.groupby('id'):
df_item.to_csv(os.path.join(dir, f'test_id_{item}.csv'), sep=',' )