【发布时间】:2019-09-15 22:29:57
【问题描述】:
在数据框的某些列上使用 groupby 后,随后使用 apply 来测试字符串是否存在于另一列中,pandas 仅返回那些分组的列以及使用 apply 创建的最后一列。是否可以返回与 groupby 关联的所有列并进行测试?例如,按对话线程的唯一标识符进行分组,并测试字符串是否存在于另一列中,然后包含数据框中存在但属于特定组的其他一些列?
我尝试使用 groupby,然后使用 apply 匿名函数。
df.head()
shipment_id shipper_id courier_id Question sender
0 14 9962 228898 Let's get your furbabys home Apple pet transpo... courier
1 91919 190872 196838 Hi I'm kevin thims and I'm happy to do the job... courier
2 92187 191128 196838 Hi I'm kevin thims and I'm happy to do the job... shipper
unique_thread_indentifier = ['shipment_id', 'shipper_id', 'courier_id']
required_variables = ['shipment_id', 'shipper_id', 'courier_id', 'Question', 'sender']
df_new = (
df
.groupby(unique_thread_indentifier)[required_variables]
.apply(lambda group: 'shipper' in group['sender'].unique())
.to_frame(name='shipper_replied')
.reset_index()
)
df_new.head()
shipment_id shipper_id courier_id shipper_replied
0 14 9962 228898 False
1 91919 190872 196838 False
2 92187 191128 196838 True
我的目标是将Question 和sender 列重新包含在最终数据框中。预期输出如下所示:
shipment_id shipper_id courier_id Question sender shipper_replied
0 14 9962 228898 Let's get your furbabys home Apple pet transpo... courier False
1 91919 190872 196838 Hi I'm kevin thims and I'm happy to do the job... courier False
2 92187 191128 196838 Hi I'm kevin thims and I'm happy to do the job... shipper True
【问题讨论】:
-
你能在问题中添加预期的输出吗?
标签: pandas pandas-groupby pandas-apply