我已經使用 SQL 查詢從資料庫中針對shop_ids提取了user_id作為Pandas資料框。
user_id shop_ids
0 022221205 541
1 023093087 5088,4460,4460,4460,4460,4460,4460,4460,5090
2 023096023 2053,2053,2053,2053,2053,2053,2053,2053,2053,1...
3 023096446 4339,4339,3966,4339,4339
4 023098684 5004,3604,5004,5749,5004
我正在嘗試使用以下方法將此資料幀寫入 csv:
df.to_csv('users_ordered_shops.csv')
我最終將 csv 將商店 ID 合并為一個數字,如下所示:
user_id shop_ids
0 22221205 541
1 23093087 508,844,604,460,446,000,000,000,000,000,000,000
2 23096023 2,053,205,320,532,050,000,000,000,000,000,000,000,000,000,000,000,000
3 23096446 43,394,339,396,643,300,000
4 23098684 50,043,604,500,457,400,000
index 的值2是:
print(df.iloc[2].shop_ids)
2053,2053,2053,2053,2053,2053,2053,2053,2053,1294,1294,2053,1922
預期輸出是一個 csv 檔案,其中所有 shop_ids 在一列或不同列中完好無損,例如:
user_id shop_ids
0 022221205 541
1 023093087 5088,4460,4460,4460,4460,4460,4460,4460,5090
2 023096023 2053,2053,2053,2053,2053,2053,2053,2053,2053,1294,1294,2053,1922
3 023096446 4339,4339,3966,4339,4339
4 023098684 5004,3604,5004,5749,5004
關于在寫入 csv 檔案時如何在不合并的情況下獲取商店 ID 的任何提示?我曾嘗試變換使用shop_ids柱astype()到int和str這導致相同的輸出。
uj5u.com熱心網友回復:
更新
要每列獲得一個商店(并洗掉重復項),您可以使用:
pd.concat([df['user_id'],
df['shop_ids'].apply(lambda x: sorted(set(x.split(','))))
.apply(pd.Series)],
axis=1).to_csv('users_ordered_shops.csv', index=False)
更改分隔符。嘗試:
df.to_csv('users_ordered_shops.csv', sep=';')
或者改變報價策略:
import csv
df.to_csv('users_ordered_shops.csv', quoting=csv.QUOTE_NONNUMERIC)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/313625.html
下一篇:如何兩次使用一個函式?
