我正在努力寻找一种整洁的方法来做以下的事情。
我有一个熊猫数据框,看起来是这样的:
data = {'Ids': [1, 2, 3, 1, 2, 3, 1, 2, 3], 'Value': [32, 56, 87, 12, 45, 78,
14, 21, 56]}
df=pd.DataFrame(data)
Out[2]:
Ids Value
0 1 32
1 2 56
2 3 87
3 1 12
4 2 45
5 3 78
6 1 14
7 2 21
8 3 56
我想添加另一列,用一个标签标识每个数据子集(id从1到3)。像这样的:
Out[3]:
Case Ids Value
0 A 1 32
1 A 2 56
2 A 3 87
3 B 1 12
4 B 2 45
5 B 3 78
6 C 1 14
7 C 2 21
8 C 3 56
我正试图以这种方式使用pandas.cut()函数,但现在已经取得了很多成功:
df["test"]=pd.cut(df1.Value, bins=3, labels=["A", "B", "C"], right=False)
有没有一个好的和整洁的方法来实现我想要的使用熊猫功能?谢谢您!
最佳答案:
我认为需要“AA>用NUMPY标引:
a = np.array(["A", "B", "C"])
df['new'] = a[df.groupby('Ids').cumcount()]
print (df)
Ids Value new
0 1 32 A
1 2 56 A
2 3 87 A
3 1 12 B
4 2 45 B
5 3 78 B
6 1 14 C
7 2 21 C
8 3 56 C