Bir*_*ish 0 python dataframe pandas
这就是我的数据的样子:
id date rt dnm
101122 2017-01-24 0.0 70
101122 2017-01-08 0.0 49
101122 2017-04-13 0.02976 67
101122 2017-08-03 1.02565 39
101122 2016-12-01 0.0 46
101122 2017-01-25 0.0 69
101122 2017-01-02 0.0 76
101122 2017-07-18 0.02631 38
101122 2016-06-02 0.0 120
221344 2016-10-21 0.00182 176
221344 2016-09-21 0.47732 194
221344 2016-06-23 0.0 169
221344 2017-10-10 0.91391 151
221344 2017-04-29 0.0 33
221344 2017-02-05 0.0 31
221344 2017-10-16 0.0 196
221344 2016-09-25 0.0 33
221344 2016-07-17 0.0 21
221344 2016-07-21 0.0 46
615695 2017-07-12 0.0 21
615695 2017-07-05 0.0 18
615695 2016-07-11 0.0 38
615695 2016-07-19 0.03655 29
615695 2017-05-27 0.0 23
615695 2017-12-22 0.0 20
615695 2017-04-25 0.0 34
615695 2017-03-23 0.0 20
615695 2016-09-23 0.0 25
615695 2016-06-18 0.0 25
Run Code Online (Sandbox Code Playgroud)
我正在尝试为每个'id'获取'dmn'列的总和,并为这个新列命名为'sum_values'.之后我需要得到'sum_values'高于300的id.以下代码生成第一部分:
data = pd.read_csv(file_name, sep='\t', header=0,
parse_dates=[1], infer_datetime_format=True);
test = (data.assign(sum_values = data.groupby('id')['dnm'].transform(np.sum))
.query('sum_values > 300'))
Run Code Online (Sandbox Code Playgroud)
这将添加一个名为"sum_values"的新列,并多次重复每个id的和值.我需要获得'id'和'sum_values'列的唯一值.但我无法弄清楚如何/在哪里添加nunique().
这是期望的结果:
id sum_values(>300)
101122 574
221344 1050
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
groupby 同 sum
d = df.groupby('id')['dnm'].sum()
Run Code Online (Sandbox Code Playgroud)
indexing
d[d > 500]
id
101122 574
221344 1050
Name: dnm, dtype: int64
Run Code Online (Sandbox Code Playgroud)
如果要在输出中使用列名,只需使用 d[d > 500].reset_index()