【发布时间】:2018-03-15 22:12:16
【问题描述】:
我尝试了几种方法来使其正常工作,但没有任何效果。所以,我将在这里给出我的整个过程。
我有一个数据框,我正在尝试计算其中的 1 列。数据存储在 csv 文件中。这是我目前将其导入数据框的方法:
import pandas as pd
df = pd.read_csv('csvfile.csv')
我的数据框如下所示:
index id name dob visit
0 111 Joe 1/1/2000 1/1/2018
1 111 Joe 1/1/2000 1/5/2018
2 122 Bob 1/1/1999 2/8/2018
3 133 Jill 1/2/1988 7/9/2017
4 111 Joe 1/1/2000 12/31/2018
因为每个客户将根据他们的访问次数在数据框中有多行,所以我想创建一个列,其中包含他们的 id 号在 id 列下显示的次数的计数。
我尝试了以下方法:
df['counts'] = df.groupby('id').id.count()
但这给了我每一行的 NaN 值。如果我切换到 size(),再次是 NaN。所以我决定把结果做成一个系列:
visits = df.groupby('id').id.count()
这给了我:
index id
111 3
122 1
133 1
这不是我所需要的,但很接近。然后我尝试使用该系列更新我的数据框:
visitcounts = visits.to_frame()
我需要让索引成为一列,并且该列具有不同的名称。
visitcounts.rename(columns = {'id': 'visitnum'}, inplace = True) 访问次数['id'] = 访问次数.index
然后,将字段添加回数据框:
pd.merge(df, visitcounts, on=['id'], how='left')
没有任何改变。我做错了什么?
【问题讨论】: