Python 3.x 如何在dataframe中为每个唯一id执行操作?
我有一个数据框,看起来像这样:Python 3.x 如何在dataframe中为每个唯一id执行操作?,python-3.x,pandas,dataframe,Python 3.x,Pandas,Dataframe,我有一个数据框,看起来像这样: [id purchase_date] [1 1-1-19 ] [1 1-4-19 ] [2 1-3-19 ] [3 1-5-19 ] [1 1-10-19 ] [... ] 我想添加一列并应用一个条件,该条件将执行以下操作: 对于每个id,从今天的日期中减去最长日期。这意味着“非活动日”。生成的表应如下所示(注意,20显示3次,而用户1在此表中显示3次):
[id purchase_date]
[1 1-1-19 ]
[1 1-4-19 ]
[2 1-3-19 ]
[3 1-5-19 ]
[1 1-10-19 ]
[... ]
我想添加一列并应用一个条件,该条件将执行以下操作:
对于每个id,从今天的日期中减去最长日期。这意味着“非活动日”。生成的表应如下所示(注意,20显示3次,而用户1在此表中显示3次):
今天的日期=2019年1月30日(1-30-19)
在pandas中如何执行此操作?您可以使用
groupby
和transform
:
import pandas as pd
# Make sure that purchase date is a proper datetime column:
df['purchase_date'] = pd.to_datetime(df['purchase_date'])
# Define todays_date variable:
todays_date = pd.to_datetime("1-30-19")
# group by id, and transform the `purchase_date` column with an anonymous function
df['inactivity_days'] = df.groupby('id').purchase_date.transform(lambda x: (todays_date - x.max()).days)
In [7]: df
Out[7]:
id purchase_date inactivity_days
0 1 2019-01-01 20
1 1 2019-01-04 20
2 2 2019-01-03 27
3 3 2019-01-05 25
4 1 2019-01-10 20
您可以使用
groupby
和transform
:
import pandas as pd
# Make sure that purchase date is a proper datetime column:
df['purchase_date'] = pd.to_datetime(df['purchase_date'])
# Define todays_date variable:
todays_date = pd.to_datetime("1-30-19")
# group by id, and transform the `purchase_date` column with an anonymous function
df['inactivity_days'] = df.groupby('id').purchase_date.transform(lambda x: (todays_date - x.max()).days)
In [7]: df
Out[7]:
id purchase_date inactivity_days
0 1 2019-01-01 20
1 1 2019-01-04 20
2 2 2019-01-03 27
3 3 2019-01-05 25
4 1 2019-01-10 20