【发布时间】:2017-10-24 07:25:34
【问题描述】:
我正在尝试根据以下数据框中每个 ID 组中的 J1 列添加分位数。
import pandas as pd
try_df = pd.DataFrame({'ID':['1','1','1','1','1','2','2','2','2','2','3','3','3','3','3'], 'J1': range(15)})
print(try_df)
try_df["quantiles"] = try_df.groupby("ID")["J1"].transform(pd.qcut,4,["Q1","Q2","Q3","Q4"])
ID J1
0 1 0
1 1 1
2 1 2
3 1 3
4 1 4
5 2 5
6 2 6
7 2 7
8 2 8
9 2 9
10 3 10
11 3 11
12 3 12
13 3 13
14 3 14
以上代码给出值错误:invalid literal for long() with base 10: 'Q4'
在真实数据中它会抛出这个错误:
ValueError: could not convert string to float: Q2
有什么解决方法的建议吗?
【问题讨论】:
标签: python pandas group-by pandas-groupby