小编Cin*_*ndy的帖子

在熊猫数据框的每一行中查找第一和最后一个非零列

我有DataFrame考虑NameDate具有单元中的权重值:

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)

StartFinish应参考下一个定义添加到dataFrame中:

  1. Start行中的第一个非零值从Jan17 列开始Apr19
  2. Finish序列中的第一个非零值,Apr19直到Jan17

同样,如果row在行中只有一个非零值,则StartFinish 是相同的。

为了找到行中的第一个非零元素,我尝试了data[col].keys, np.argmax()它,并按预期工作。

date_col_list = ['Jan17','Jun18','Dec18', 'Apr19'] …

python dataframe pandas argmax

8
推荐指数
4
解决办法
721
查看次数

按唯一名称和状态以及最后一个日期分组

我想分析每辆汽车的统计数据,这些统计数据是修理的和新的。数据样本为:

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按名称命名,如果有Falsein IsItNew列,则应该设置,False以及第一个日期(False发生的时间)。

我尝试groupbynunique()

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)

python group-by crosstab dataframe pandas

5
推荐指数
1
解决办法
78
查看次数

标签 统计

dataframe ×2

pandas ×2

python ×2

argmax ×1

crosstab ×1

group-by ×1