我希望從一個原始資料幀創建多個資料幀。我想遍歷一列并在其匹配項上創建資料框。
TargetListID Placement_Description Buy_Component_Type NPI_ID First_Name
0 123456 test_test email 123456 paul
1 234567 test_test email 123456 paul
2 345678 test_test email 123456 paul
3 456789 test_test email 123456 paul
4 123456 test_test_test video 987654 karol
5 234567 test_test_test video 987654 karol
6 345678 test_test_test video 987654 karol
7 456789 test_test_test video 987654 karol
這是我原來的df,我想為TargetListID我瀏覽過的每場比賽創建一個新的df :
回圈創建多個資料框
并嘗試了以下方法:
def create_df_from_target_list_id(dataframe):
dataframe = {target_list_id: pd.DataFrame() for target_list_id in dataframe['TargetListID']}
return dataframe
test = create_df_from_target_list_id(df)
print(test)
這給了我:
{123456: Empty DataFrame
Columns: []
Index: [], 234567: Empty DataFrame
Columns: []
Index: [], 345678: Empty DataFrame
Columns: []
Index: [], 456789: Empty DataFrame
Columns: []
Index: []}
所以不確定我在這里到底做錯了什么?將創建任何指標。原因是原始資料框可能有 1000 行。所以想在不知道的情況下創建資料框TargetListId
我在這里嘗試了 groupby:
def create_df_from_target_list_id(dataframe):
dataframe = dict(iter(dataframe.groupby('TargetListID')))
return dataframe
test = create_df_from_target_list_id(df)
print(test)
并得到以下
{123456: TargetListID Placement_Description Buy_Component_Type NPI_ID First_Name
0 123456 test_test email 123456 paul
4 123456 test_test_test video 987654 karol, 234567: TargetListID Placement_Description Buy_Component_Type NPI_ID First_Name
1 234567 test_test email 123456 paul
5 234567 test_test_test video 987654 karol, 345678: TargetListID Placement_Description Buy_Component_Type NPI_ID First_Name
2 345678 test_test email 123456 paul
6 345678 test_test_test video 987654 karol, 456789: TargetListID Placement_Description Buy_Component_Type NPI_ID First_Name
3 456789 test_test email 123456 paul
7 456789 test_test_test video 987654 karol}
uj5u.com熱心網友回復:
看起來您的方法并不遙遠,但請注意,在您呼叫的函式中pd.DataFrame(),它創建了一個 DataFrame,但沒有給它使用資料(因此是空的 DataFrame)。
如果您希望 TargetListID 的每個唯一值都有一個 DataFrame,并且您的原始 DataFrame 被呼叫df,那么您可以執行以下操作:
df_dictionary = { target_id: df[ df.TargetListID == target_id ] for target_id in df.TargetListID.unique() }
您可以在函式內部或單獨執行此操作。
請注意,您可能希望首先洗掉任何空 TargetListID 值,并且您可能希望在創建字典時根據需要使用reset_index()。
uj5u.com熱心網友回復:
我認為您正在尋找一個簡單明了的groupby。
r = {}
for target_id, df in in dataframe.groupby('TargetListID'):
r[target_id] = df
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/408919.html
標籤:
上一篇:從串列和字典的組合創建熊貓資料框
