我是 python 新手,并試圖讓回圈正常作業。我正在嘗試遍歷資料框——對于“Acct”列中的每個唯一值,我想創建一個帶有帳戶名稱的 csv 檔案。所以應該有一個 Account1.csv、Account2.csv 和 Account3.csv 創建。
當我運行這段代碼時,只有 Account3.csv 被創建(我猜其他人正在被創建但不知何故被覆寫?)
data = [('Account1', 'ibm', 20),
('Account1', 'aapl', 30),
('Account1', 'googl', 15),
('Account1', 'cvs', 18),
('Account2', 'wal', 24),
('Account2', 'abc', 65),
('Account2', 'bmw', 98),
('Account2', 'deo', 70),
('Account2', 'glen', 40),
('Account3', 'aapl', 50),
('Account3', 'googl', 68),
('Account3', 'orcl', 95)]
data_df = pd.DataFrame(data, columns = ['Acct', 'ticker', 'qty'])
acctlist = data_df["Acct"].drop_duplicates()
save_to = "c:/temp/csv/"
save_as = Acct ".csv"
for Acct in acctlist:
#print(data_df[data_df["Acct"] == Acct])
Acct_df = (data_df[data_df["Acct"] == Acct])
Acct_df.to_csv(save_to save_as)
uj5u.com熱心網友回復:
你永遠不會save_as在回圈中重命名。嘗試這個:
for Acct in acctlist:
save_as = Acct ".csv"
Acct_df = (data_df[data_df["Acct"] == Acct])
Acct_df.to_csv(save_to save_as)
請注意,回圈遍歷 pandas 資料幀通常是一個壞主意,因為它效率低下。在這種情況下它可能作業得很好,尤其是對于一個小的資料框,但一般來說你應該盡量避免它。
您可以使用以下方法完成相同的任務apply:
import os
data_df.groupby('Acct').apply(
lambda group: pd.DataFrame.to_csv(group, os.path.join(save_to, f'{group.name}.csv'))
)
uj5u.com熱心網友回復:
另一種拆分并寫出 CSV 的方法:
for acct, frame in df_out.groupby('Acct'):
frame.to_csv(os.path.join(save_to, f'{acct}.csv'))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/492550.html
