亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何根據條件從一個原始 df 創建多個 df,然后為它們分配單獨的名稱

如何根據條件從一個原始 df 創建多個 df,然后為它們分配單獨的名稱

Helenr 2022-10-05 16:43:29
df_collection = {} for country in country_names:    df_collection[country] = df.loc[df['CountryName'] == country].copy我想從一個原始df(每個國家的頻率不同)中創建幾個df(每個國家大約70個),然后為它們分配單獨的名稱(因此我使用了字典)。但我不能再訪問個人 df 了。它們應該有不同的名稱,并且應該保持一個數據框。錯誤:“方法”對象不可下標有沒有人有辦法解決嗎?
查看完整描述

1 回答

?
吃雞游戲

TA貢獻1829條經驗 獲得超7個贊

您為每個字典鍵分配了一個方法。您需要使用 調用 copy (),即df.loc[df['CountryName'] == country].copy()。


但是,無需在循環中對 DataFrame 進行子集化。這正是groupby制作的目的,您可以簡潔地創建字典


df_collection = dict(tuple(df.groupby('CountryName')))

這是因為__iter__groupby 對象的方法:“返回:生成器為每個組產生(名稱,子集對象)序列”,因此使用單個分組鍵,這些值成為字典的鍵。


樣本

print(df)

#  CountryName  Data

#0           a     8

#1           c     4

#2           b     4

#3           a     1

#4           a     1

#5           c     7


df_collection = dict(tuple(df.groupby('CountryName')))

## If you care for the subset defined in some list `country_names`, subset first

# df_collection = dict(tuple(df[df.CountryName.isin(country_names)].groupby('CountryName')))


df_collection['a']

#  CountryName  Data

#0           a     8

#3           a     1

#4           a     1


查看完整回答
反對 回復 2022-10-05
  • 1 回答
  • 0 關注
  • 101 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號