[英]How to create a new column with a conditional count in a groupby pandas dataFrame
[英]How to create new column from groupby column and conditional check on another column in pandas?
我有一个熊猫数据框,
data = pd.DataFrame([['TRAN','2019-01-06T21:44:09Z','T'],
['LMI','2019-01-06T19:44:09Z','U'],
['ARN','2019-01-02T19:44:09Z','V'],
['TRAN','2019-01-08T06:44:09Z','T'],
['TRAN','2019-01-06T18:44:09Z','U'],
['ARN','2019-01-04T19:44:09Z','V'],
['LMI','2019-01-05T16:34:09Z','U'],
['ARN','2019-01-08T19:44:09Z','V'],
['TRAN','2019-01-07T14:44:09Z','T'],
['TRAN','2019-01-06T11:44:09Z','U'],
['ARN','2019-01-10T19:44:09Z','V'],
],
columns=['Type', 'Date', 'Decision'])
我需要按类型列分组并找到每种类型的最小日期并为最小日期创建一个新列作为“第一个”否则为“稍后”
我可以基于data.groupby('Type')
,我不知道如何在 groupdyDF 中找到min(data['Date'])
并创建一个新列。
我的最终数据看起来像
['TRAN','2019-01-06T21:44:09Z','T','Later'],
['LMI','2019-01-06T19:44:09Z','U','Later'],
['ARN','2019-01-02T19:44:09Z','V','First'],
['TRAN','2019-01-08T06:44:09Z','T','Later'],
['TRAN','2019-01-06T18:44:09Z','U','Later'],
['ARN','2019-01-04T19:44:09Z','V','Later'],
['LMI','2019-01-05T16:34:09Z','U','First'],
['ARN','2019-01-08T19:44:09Z','V','Later'],
['TRAN','2019-01-07T14:44:09Z','T','Later'],
['TRAN','2019-01-06T11:44:09Z','U','First'],
['ARN','2019-01-10T19:44:09Z','V','Later'],
],
columns=['Type', 'Date', 'Decision']
IIUC你可以使用这个:
df.groupby('Type').agg(First=('Date','first'), Later=('Date','last')).reset_index()
IICU,您可以使用np.where来获取您的输出
data['check']=np.where(data.Date > data.groupby('Type')['Date'].transform(min), 'Later','First')
print(data)
输出
Type Date Decision check
0 TRAN 2019-01-06T21:44:09Z T Later
1 LMI 2019-01-06T19:44:09Z U Later
2 ARN 2019-01-02T19:44:09Z V First
3 TRAN 2019-01-08T06:44:09Z T Later
4 TRAN 2019-01-06T18:44:09Z U Later
5 ARN 2019-01-04T19:44:09Z V Later
6 LMI 2019-01-05T16:34:09Z U First
7 ARN 2019-01-08T19:44:09Z V Later
8 TRAN 2019-01-07T14:44:09Z T Later
9 TRAN 2019-01-06T11:44:09Z U First
10 ARN 2019-01-10T19:44:09Z V Later
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.