我有一个长这样的数据框:
我希望您对config_name进行分组,然后在每个唯一的config_version上应用cumcount,以便获得一个额外的列,如下所示:
但是我似乎无法理解如何去做。 我尝试使用
以下是输出结果:
我也尝试过。
ID ..... config_name config_version ...
aa A 0
ab A 7
ad A 7
ad A 27
bb B 0
cc C 0
cd C 8
我希望您对config_name进行分组,然后在每个唯一的config_version上应用cumcount,以便获得一个额外的列,如下所示:
ID ..... config_name config_version config_version_count
aa A 0 0
ab A 7 1
ad A 7 1
ad A 27 2
bb B 0 0
cc C 0 0
cd C 8 1
但是我似乎无法理解如何去做。 我尝试使用
unique_count = df.groupby('config_name')['config_version'].cumcount()
unique_count = pd.DataFrame({'config_name': [unique_count.index], 'config_version_count: [unique.count.values]})
df = pd.merge(df,unique_count, on = 'config_name' , how = 'left')
以下是输出结果:
ID ..... config_name config_version config_version_count
aa A 0 0
ab A 7 1
ad A 7 2
ad A 27 3
bb B 0 0
cc C 0 0
cd C 8 1
我也尝试过。
unique_count = df.drop_duplicates().groupby('config_name')['config_version'].cumcount()
unique_count.reindex(df.index).ffill()
df['config_version_count'] = unique_count
但这与第一次尝试产生了相同的输出。
您有什么想法可以解决这个问题吗?
m = df['config_name'].notna()
,然后df.loc[m, 'config_version_count'] = (df[m].groupby('config_name')['config_version'].transform(lambda x: pd.CategoricalIndex(x).codes))
。 - jezrael