從 MONGODB 提取資料幀后,我試圖保存 csv 檔案。
當我創建資料框時,它會根據其日期列生成每個資料框。
此外,更多資料框有一列id有 31 個不同的 ID 號。
我想單獨保存我的 csv,包括 csv 名稱中的 id 號。
我之前使用熊貓以這種方式保存我的資料框:
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
.................
我能得到一些幫助嗎?
謝謝
uj5u.com熱心網友回復:
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 值的提取程序。熊貓的方式是使用grouby:
for item, df_item in df.groupby('id'):
df_item.to_csv(os.path.join(dir, f'test_id_{item}.csv'), sep=',' )
uj5u.com熱心網友回復:
對于每個 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=',' )
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/418860.html
標籤:
