我有一个DT_new包含4列的data.frame :
样品:
Graduated Work Married Jumlah
2015-05-01 2015-05-02 2015-05-03 20
NA 2015-05-02 2015-05-03 20
NA NA 2015-05-03 20
NA 2015-05-02 NA 20
Run Code Online (Sandbox Code Playgroud)
我需要Jumlah按日期汇总Graduated或Work或Married
Graduated值不是时NA,使用日期GraduatedGraduated值为NA,使用Work或的
另一个值Married格式化我想要的是:
Dates Total
2015-05-01 10
2015-05-02 40
2015-05-03 30
Run Code Online (Sandbox Code Playgroud)
我aggregate在R中尝试过group by,但只是按1列(分级)分组,例如:
DT_Totals = DT_Total %>%
group_by(Graduated) %>%
summarise(Total= sum(Jumlah)) %>%
arrange(Graduated)
Run Code Online (Sandbox Code Playgroud)
我该如何处理我的问题?
我有数据集:
recency;frequency;monetary
21;156;41879955
13;88;16850284
8;74;79150488
2;74;26733719
9;55;16162365
...;...;...
Run Code Online (Sandbox Code Playgroud)
详细的原始数据 - > http://pastebin.com/beiEeS80
和我投入DataFrame,这里是我的完整代码:
df = pd.DataFrame(datas, columns=['userid', 'recency', 'frequency', 'monetary'])
df['recency'] = df['recency'].astype(float)
df['frequency'] = df['frequency'].astype(float)
df['monetary'] = df['monetary'].astype(float)
df['recency'] = pd.qcut(df['recency'].values, 5).codes + 1
df['frequency'] = pd.qcut(df['frequency'].values, 5).codes + 1
df['monetary'] = pd.qcut(df['monetary'].values, 5).codes + 1
Run Code Online (Sandbox Code Playgroud)
但它的返回错误
df['frequency'] = pd.qcut(df['frequency'].values, 5).codes + 1
ValueError: Bin edges must be unique: array([ 1., 1., 2., 4., 9., 156.])
Run Code Online (Sandbox Code Playgroud)
怎么解决这个?
比方说我有:
a = [10,14,16]
b = [0,1,2]
我想结合a,并b在一个列表中,如下图所示:
print c
[[10, 0], [14, 1], [16, 2]]
Run Code Online (Sandbox Code Playgroud)
我试图合并这两个列表:
a + b
[10, 14, 16, 0, 1, 2]
Run Code Online (Sandbox Code Playgroud)
但它与我想要达到的目标不同.我怎么能用Python做到这一点?
我使用熊猫来分析我的数据,并执行:
df = pd.DataFrame(datas, columns=['userid', 'recency', 'frequency', 'monetary'])
print df
userid recency frequency monetary
0 47918 9 53 788778
1 48302 85 10 232323
2 8873 3 79 2323
3 63158 23 23 2323232
4 364 14 43 232323
5 45191 1 75 224455
6 21061 9 64 23367
7 41356 22 55 2346777
8 42455 14 30 23478
9 65460 3 16 2345
Run Code Online (Sandbox Code Playgroud)
我需要将 valuerecency frequency和monetaryvalue转换为 1-5 范围内的值。所以输出是
userid recency frequency monetary
0 47918 1 …Run Code Online (Sandbox Code Playgroud)