假设我有一个数据框df1,其列类似于[user_id:字符串,app_name:字符串,频率:浮动]。现在,我想获得一个df2矩阵表示形式Users x Apps,其中每个条目都指示频率。换句话说,df2的列看起来像[user_id,frequency_app_1,frequency_app_2,... frequency_app_n] 另外,当n <1000和n> 10000时,如何处理数据?
由于我不知道该问题的关键字,因此线索也将有所帮助。
假设数据集如下所示
user_id app_name frequency
id001 app4 324.54
id005 app4 786.56
id002 app3 87.79
id002 app4 423.76
id003 app1 23.34
id001 app2 34.76
id001 app1 796.89
id004 app6 324.12
id002 app1 32.34
id004 app3 124.98
id003 app1 324.98
id003 app1 434.5
id001 app1 89.54
id001 app4 54.51
id002 app2 544.87
id003 app3 76.0
id002 app1 32.32
id001 app1 654.56
预期结果应该像
user_id frequency_app_1 frequency_app_2 frequency_app_3 frequency_app_4
id001 1629.1 34.76 N/A 379.05
...
答案 0 :(得分:0)
我认为您的示例有一个小问题。有些列的“ user_id”和“ app_name”相同,但“频率”不同。因此,您不能直接使用数据透视,可以先drop_duplicates然后再使用数据透视。
df2 = df.drop_duplicates(subset=["user_id", "app_name"])
df2.pivot(index="user_id", columns="app_name", values="frequency")
# Output
app_name app1 app2 app3 app4 app6
user_id
id001 796.89 34.76 NaN 324.54 NaN
id002 32.34 544.87 87.79 423.76 NaN
id003 23.34 NaN 76.00 NaN NaN
id004 NaN NaN 124.98 NaN 324.12
id005 NaN NaN NaN 786.56 NaN
但是,如果“ user_id”和“ app_name”相同,请确保要使用哪些列。