Python 熊猫:对于特定列中的所有重复条目集,获取第2部分中的一些信息
所以我最近问了一个关于这组数据的问题() 现在我有这个代码:Python 熊猫:对于特定列中的所有重复条目集,获取第2部分中的一些信息,python,python-3.x,pandas,dataframe,pandas-groupby,Python,Python 3.x,Pandas,Dataframe,Pandas Groupby,所以我最近问了一个关于这组数据的问题() 现在我有这个代码: df.groupby('ID_Code').apply(lambda x: (x[['Status1','Status2']] == 'Not').all(1).sum()/len(x)*100) 这给了我这个输出: ID_Code A 0.000000 B 50.000000 C 66.666667 dtype: float64 我想知道的是做同样的事情,但给一个额外的日期栏。因此,重申一下,我希望
df.groupby('ID_Code').apply(lambda x: (x[['Status1','Status2']] == 'Not').all(1).sum()/len(x)*100)
这给了我这个输出:
ID_Code
A 0.000000
B 50.000000
C 66.666667
dtype: float64
我想知道的是做同样的事情,但给一个额外的日期栏。因此,重申一下,我希望每天每个ID_代码的Not百分比
ID_Code Status1 Status2 Date
0 A Done Not 01-23-18
1 A Done Done 01-23-18
2 B Not Not 01-24-18
3 B Not Done 01-24-18
4 C Not Not 01-24-18
5 C Not Not 01-25-18
6 C Done Done 01-25-18
只需将
Date
添加到您的groupby:
df.groupby(['ID_Code','Date']).apply(lambda x: (x[['Status1','Status2']] == 'Not').all(1).sum()/len(x)*100)
ID_Code Date
A 01-23-18 0.0
B 01-24-18 50.0
C 01-24-18 100.0
01-25-18 50.0
dtype: float64
# To get as a standard dataframe, add in `.reset_index()`
# df.groupby(['ID_Code','Date']).apply(lambda x: (x[['Status1','Status2']] == 'Not').all(1).sum()/len(x)*100).reset_index()
谢谢工作得很好。
df.groupby(['ID_Code','Date']).apply(lambda x: (x[['Status1','Status2']] == 'Not').all(1).sum()/len(x)*100)
ID_Code Date
A 01-23-18 0.0
B 01-24-18 50.0
C 01-24-18 100.0
01-25-18 50.0
dtype: float64
# To get as a standard dataframe, add in `.reset_index()`
# df.groupby(['ID_Code','Date']).apply(lambda x: (x[['Status1','Status2']] == 'Not').all(1).sum()/len(x)*100).reset_index()