我想为Customer_Acquisition_Channel列中的每个类别将Days_To_Acquisition列中的所有值添加到单独的df中。
所有Customer_ID值在下面的数据集中都是唯一的
DF
Customer_ID Customer_Acquisition_Channel Days_To_Acquisition
323 Organic 2
583 Organic 5
838 Organic 2
193 Website 7
241 Website 7
642 Website 1所需输出: Days_To_Acq_Organic_Df
Index Days_To_Acquisition
0 2
1 5
2 2Days_To_Acq_Website_Df
Index Days_To_Acquisition
0 7
1 7
2 1这就是我到目前为止所尝试的方法,但我想使用for循环,而不是手动遍历每一列
sub_1 = df.loc[df['Customer_Acquisition_Channel'] == 'Organic']
Days_To_Acq_Organic_Df=sub_1[['Days_To_Acquisition']]
sub_2 = df.loc[df['Customer_Acquisition_Channel'] == 'Website']
Days_To_Acq_Website_Df=sub_2[['Days_To_Acquisition']]发布于 2021-05-24 02:57:49
您可以遍历通道列的唯一值,创建新的数据帧,更改列名,并将其附加到列表中:
dataframes = []
for channel in df.Customer_Acquisition_Channel.unique():
new_df = df[df['Customer_Acquisition_Channel'] == channel][['Customer_ID','Days_To_Acquisition']]
new_df.columns = ['Customer_ID',f'Days_To_Acquisition_{channel}_df']
dataframes.append(new_df)输出:
for df in dataframes:
print(df,'\n__________')
Customer_ID Days_To_Acquisition_Organic_df
0 323 2
1 583 5
2 838 2
__________
Customer_ID Days_To_Acquisition_Website_df
3 193 7
4 241 7
5 642 1
__________或者,您可以将数据帧存储到字典中,这样您就可以对它们进行命名并分别调用它们:
dataframes = {}
for channel in df.Customer_Acquisition_Channel.unique():
new_df = df[df['Customer_Acquisition_Channel'] == channel][['Customer_ID','Days_To_Acquisition']]
new_df.columns = ['Customer_ID',f'Days_To_Acquisition_{channel}']
dataframes[f'Days_To_Acquisition_{channel}_df'] = new_df输出:
print(dataframes['Days_To_Acquisition_Organic_df'])
Customer_ID Days_To_Acquisition_Organic
0 323 2
1 583 5
2 838 2https://stackoverflow.com/questions/67662879
复制相似问题