我想得到这样的东西。
A
1
1
2
3
3
4
4
4
4
我想成为
A B
1 2
1 2
2 1
3 2
3 2
4 4
4 4
4 4
4 4
就像你在这里看到的那样,密钥是重复的,并且仍然与原始密钥相同。
我知道如何使用data.table在R中执行此任务,我只知道如何使用groupby获取pandas中的唯一键计数。
有人有想法吗?
谢谢!
答案 0 :(得分:5)
您可以使用:
import pandas as pd
df = pd.DataFrame({
'A' : [1, 1, 2, 3, 3, 4, 4, 4, 4]
})
df['B'] = df.groupby(['A'])['A'].transform('count')
print(df)
输出:
A B
0 1 2
1 1 2
2 2 1
3 3 2
4 3 2
5 4 4
6 4 4
7 4 4
8 4 4
答案 1 :(得分:3)
您可以使用groupby并合并:
df = pd.DataFrame({'A' : [1, 1, 2, 3, 3, 4, 4, 4, 4]})
df = df.merge(df.groupby('A').size().reset_index(), on='A')
哪个会给你:
A 0
0 1 2
1 1 2
2 2 1
3 3 2
4 3 2
5 4 4
6 4 4
7 4 4
8 4 4
答案 2 :(得分:2)
使用pd.factorize
和np.bincount
f = df.A.factorize()[0]
df.assign(B=np.bincount(f)[f])
A B
0 1 2
1 1 2
2 2 1
3 3 2
4 3 2
5 4 4
6 4 4
7 4 4
8 4 4
pd.factorize
将创建一个整数数组,其中每个整数表示分解数组中的唯一值。这些整数从零开始。
f
array([0, 0, 1, 2, 2, 3, 3, 3, 3])
np.bincount
将使用整数数组中的每个值,并计算该整数被看到的次数。如果我们将这些整数视为二进制数,那么我们计算每个二进制数被引用的次数。
np.bincount(f)
array([2, 1, 2, 4])
最后,我们使用f
对这些计数进行切片,以便在每次引用bin时重复计算重复计数。
np.bincount(f)[f]
array([2, 2, 1, 2, 2, 4, 4, 4, 4])
答案 3 :(得分:2)
将function promiseOne() {
return Promise.resolve(1)
}
type ThenArg<T> = T extends Promise<infer U> ? U :
T extends (...args: any[]) => Promise<infer U> ? U :
T
type PromiseOneThenArg = ThenArg<typeof promiseOne> // => number
与map
groupby
size