我想计算每个ID的月数
number_of_months=df.ID.value_counts()
我有熊猫系列
ID
564 30
133 30
156 30
153 30
具有单个列ID
如何获取具有两列df1
的数据框(ID, numberofmonts)
以根据ID与其他数据框df
合并
df = pd.merge(df, df1, how='left', left_on=['ID'], right_on = ['ID'])
这是特征工程的标准问题。我想用count或其他函数定义一些新功能,然后与dataframe合并
答案 0 :(得分:0)
在这种情况下, value_counts()的结果是 Series ,具有:
有点棘手的细节是该系列( ID )的名称实际上是指 到(唯一)列,包含特定事件的出现次数 将其设置为原始的 ID 列。
所以您的任务是:
执行此操作的代码是:
number_of_months.index.rename('ID', inplace=True)
number_of_months.rename('numberOfMonths', inplace=True)
df1 = number_of_months.reset_index()
对于您的样本数据,结果是:
ID numberOfMonths
0 564 30
1 133 30
2 156 30
3 153 30
现在 ID 名称与原始 ID 值相关,您可以将其与 在 ID 列上的另一个DataFrame。
如果您打算在 df 中添加 numberOfMonths 列, 包含特定 ID 出现了多少次的信息 在此DataFrame中,更快,更简单的解决方案是:
df['numberOfMonths'] = df.groupby('ID').transform('count')