给定这样的数据帧df
:
a b
2 nan
3 nan
3 nan
4 nan
4 nan
4 nan
5 nan
5 nan
5 nan
5 nan
...
一个关键规则是
n
中的每个数字a
重复n-1
行。我的预期输出是:a b
2 1
3 1
3 2
4 1
4 2
4 3
5 1
5 2
5 3
5 4
...
因此,
m
中的数字b
是从1
到n-1
的列表。我以这种方式尝试过:df.groupby('a').apply(lambda x: np.asarray(range(x['a'].unique()[0])))
但是结果是一行中的列表,这不是我想要的。
您能告诉我如何实施吗?提前致谢!
最佳答案
您需要cumcount
:
df['b'] = df.groupby('a').cumcount() + 1
print (df)
a b
0 2 1
1 3 1
2 3 2
3 4 1
4 4 2
5 4 3
6 5 1
7 5 2
8 5 3
9 5 4
关于python - 如何对python-pandas中的列进行分组和分配数组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39749653/