将数据帧转换为所需的形式

2024-09-27 02:24:32 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个数据帧df1,其列类似于[user\u id:string,app\u name:string,frequency:float]。现在我想得到一个df2矩阵表示Users x Apps,其中每个条目表示频率。换句话说,df2的列看起来像[用户id,频率app 1,频率app 2。。。频率[应用程序] 另外,当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
...

Tags: 数据nameidappstring频率df2frequency
1条回答
网友
1楼 · 发布于 2024-09-27 02:24:32

我觉得你的例子有点问题。有些列的“用户id”和“应用程序名称”相同,但“频率”不同。因此,您不能直接使用pivot,您可以删除重复项,然后使用pivot。你知道吗

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\u id”和“app\u name”是相同的,请确定您想要什么列。你知道吗

相关问题 更多 >

    热门问题