我有数据
member_id device_id
19404 dfbc9d3230304cdfb0316cc32c41b67f [2016-04-28, 2016-04-27, 2016-04-26, 2016-04-22]
19555 176e307bd8714a00ac2b99276123f0a7 [2016-04-29, 2016-04-28, 2016-04-27, 2016-04-23]
19632 a6d4b631e09a4b31afef4c93472c7da3 [2016-04-29, 2016-04-28, 2016-04-27]
19792 0146b09048ce4c47af4bbc69e7999137 [2016-04-23, 2016-04-22, 2016-04-21, 2016-04-20]
20258 1510f9b4efc14183ad412eb54c9e058f [2016-04-09]
5f42f4d02d38456689e58d6a1b9a3e16 [2016-04-29, 2016-04-28, 2016-04-25, 2016-04-22]
我需要在列表的第三列中计算值。
我试着len()
,我认为它会返回列表的长度,但这是错误的。
new = data.groupby(['member_id', 'device_id'])['event_date'].unique()
count()
返回所有值的总和
答案 0 :(得分:2)
假设您的上一栏list
中有l
个值:
In [113]: df.l.map(len)
Out[113]:
0 4
1 4
2 3
3 4
4 1
5 4
Name: l, dtype: int64
如果您的上一列是字符串,则可以先将其转换为列表:
df.l.str.replace('[\[\]]', '').str.split('\s*,\s*').map(len)
答案 1 :(得分:1)
您可以将len
功能应用于分组列。 .iat[0]
获取组中的第一个项目,在这种情况下是您的列表。
>>> df.groupby(['member_id', 'device_id'])['event_date'].agg(
{'event_count': lambda group: len(group.iat[0])})
event_count
member_id device_id
19404 dfbc9d3230304cdfb0316cc32c41b67f 4
19555 176e307bd8714a00ac2b99276123f0a7 4
19632 a6d4b631e09a4b31afef4c93472c7da3 3
19792 0146b09048ce4c47af4bbc69e7999137 4
20258 1510f9b4efc14183ad412eb54c9e058f 1
5f42f4d02d38456689e58d6a1b9a3e16 4
答案 2 :(得分:1)
这就是你要找的东西:
import pandas as pd
df = pd.DataFrame(columns=('member_id','device_id','event_date'),data=[
[19404,'dfbc9d3230304cdfb0316cc32c41b67f',['2016-04-28', '2016-04-27', '2016-04-26', '2016-04-22']],
[19555,'176e307bd8714a00ac2b99276123f0a7',['2016-04-29', '2016-04-28', '2016-04-27', '2016-04-23']],
[19632,'a6d4b631e09a4b31afef4c93472c7da3',['2016-04-29', '2016-04-28', '2016-04-27']],
[19792,'0146b09048ce4c47af4bbc69e7999137',['2016-04-23', '2016-04-22', '2016-04-21', '2016-04-20']],
[20258,'1510f9b4efc14183ad412eb54c9e058f',['2016-04-09']],
[20258,'5f42f4d02d38456689e58d6a1b9a3e16',['2016-04-29', '2016-04-28', '2016-04-25', '2016-04-22']]
])
new = df.groupby(['member_id', 'device_id'])['event_date']
for each_n in new:
print each_n[0],len(each_n[1].values[0])
<强>输出强>
(19404, 'dfbc9d3230304cdfb0316cc32c41b67f') 4
(19555, '176e307bd8714a00ac2b99276123f0a7') 4
(19632, 'a6d4b631e09a4b31afef4c93472c7da3') 3
(19792, '0146b09048ce4c47af4bbc69e7999137') 4
(20258, '1510f9b4efc14183ad412eb54c9e058f') 1
(20258, '5f42f4d02d38456689e58d6a1b9a3e16') 4