我有DataFrame考虑Name
并Date
具有单元中的权重值:
Name Jan17 Jun18 Dec18 Apr19 count
Nick 0 1.7 3.7 0 2
Jack 0 0 2.8 3.5 2
Fox 0 1.7 0 0 1
Rex 1.0 0 3.0 4.2 3
Snack 0 0 2.8 4.4 2
Yosee 0 0 0 4.3 1
Petty 0.5 1.3 2.8 3.5 4
Run Code Online (Sandbox Code Playgroud)
Start
并Finish
应参考下一个定义添加到dataFrame中:
Start
行中的第一个非零值从Jan17
列开始Apr19
Finish
序列中的第一个非零值,Apr19
直到Jan17
同样,如果row在行中只有一个非零值,则Start
和Finish
是相同的。
为了找到行中的第一个非零元素,我尝试了data[col].keys, np.argmax()
它,并按预期工作。
date_col_list = ['Jan17','Jun18','Dec18', 'Apr19'] …
我想分析每辆汽车的统计数据,这些统计数据是修理的和新的。数据样本为:
Name IsItNew ControlDate
Car1 True 31/01/2018
Car2 True 28/02/2018
Car1 False 15/03/2018
Car2 True 16/04/2018
Car3 True 30/04/2018
Car2 False 25/05/2018
Car1 False 30/05/2018
Run Code Online (Sandbox Code Playgroud)
因此,我应该groupby
按名称命名,如果有False
in IsItNew
列,则应该设置,False
以及第一个日期(False
发生的时间)。
我尝试groupby
了nunique()
:
df = df.groupby(['Name','IsItNew', 'ControlDate' ])['Name'].nunique()
Run Code Online (Sandbox Code Playgroud)
但是,它返回每个组中唯一项的计数。
我怎样才能只接收分组的唯一项目而无任何计数?
Actual result is:
Name IsItNew ControlDate
Car1 True 31/01/2018 1
False 15/03/2018 1
30/05/2018 1
Car2 True 28/02/2018 1
16/04/2018 1
False 25/05/2018 1
Car3 True 30/04/2018 1
Expected Result is:
Name …
Run Code Online (Sandbox Code Playgroud)