首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >迭代列中的每个类别,并将另一列中的值作为单独的df添加

迭代列中的每个类别,并将另一列中的值作为单独的df添加
EN

Stack Overflow用户
提问于 2021-05-24 02:00:25
回答 1查看 28关注 0票数 0

我想为Customer_Acquisition_Channel列中的每个类别将Days_To_Acquisition列中的所有值添加到单独的df中。

所有Customer_ID值在下面的数据集中都是唯一的

DF

代码语言:javascript
复制
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

代码语言:javascript
复制
Index Days_To_Acquisition
0     2
1     5
2     2

Days_To_Acq_Website_Df

代码语言:javascript
复制
Index Days_To_Acquisition
0     7
1     7
2     1

这就是我到目前为止所尝试的方法,但我想使用for循环,而不是手动遍历每一列

代码语言:javascript
复制
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']]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-24 02:57:49

您可以遍历通道列的唯一值,创建新的数据帧,更改列名,并将其附加到列表中:

代码语言:javascript
复制
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)

输出:

代码语言:javascript
复制
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 
__________

或者,您可以将数据帧存储到字典中,这样您就可以对它们进行命名并分别调用它们:

代码语言:javascript
复制
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

输出:

代码语言:javascript
复制
print(dataframes['Days_To_Acquisition_Organic_df'])

   Customer_ID  Days_To_Acquisition_Organic
0          323                            2
1          583                            5
2          838                            2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67662879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档