如何将多行数据转换为一行?(Python)

如何将多行数据转换为一行?(Python),python,pandas,csv,Python,Pandas,Csv,在我的硕士论文中,我试图根据一个人使用移动应用程序的方式找到不同类型的用户行为 我的数据集是.csv文件(日志文件)。我有来自许多Android用户的一个mounth应用程序使用情况的数据 对于每个用户,我收集了他与使用移动应用程序方式相关的日常互动,例如:使用过的应用程序名称、类别应用程序、使用时间、使用频率、使用持续时间。我的数据集由9632行组成,分布在67个用户上 d=[[1,'2020-09-10','night','Settings','System tool',1,3.436],

在我的硕士论文中,我试图根据一个人使用移动应用程序的方式找到不同类型的用户行为

我的数据集是.csv文件(日志文件)。我有来自许多Android用户的一个mounth应用程序使用情况的数据

对于每个用户,我收集了他与使用移动应用程序方式相关的日常互动,例如:
使用过的应用程序名称、类别应用程序、使用时间、使用频率、使用持续时间。
我的数据集由9632行组成,分布在67个用户上

d=[[1,'2020-09-10','night','Settings','System tool',1,3.436],
[1,‘2020-09-11’、‘下午’、‘日历’、‘日历’、5、9.965],
[1,‘2020-09-11’、‘下午’、‘联系人’、‘电话和短信’、7、2.606],
[2,‘2020-09-11’、‘下午’、‘Facebook’、‘社交’、15、50.799],
[2,‘2020-09-11’、‘下午’、‘时钟’、‘系统工具’、2、5.223],
[3,'2020-11-18','morning','Contacts','Phone_and_SMS',3,1.726],
[3,'2020-11-18','morning','Google','Productivity',1,4.147],
[3,'2020-11-18','morning','Instagram','Social',1,0.501],
[4,'2020-11-18','morning','Truecaller','Communication',1,1.246],
[4,'2020-11-18','night','Instagram','Social',7103.774]]
df=pd.DataFrame(d,列=['UserId','Date','Part\u of\u day','Apps','Category','Frequency','Duration\u ToT'])
需要说明的是,以下是dataframe的一个示例:

UserId  Date    Part_of_day    Apps         Category        Frequency      Duration_ToT
    1   2020-09-10  evening    Settings     System tool        1          3.436
    1   2020-09-11  afternoon   Calendar    Calendar           5          9.965
    1   2020-09-11  afternoon   Contacts    Phone_and_SMS      7          2.606
    2   2020-09-11  afternoon   Facebook    Social             15         50.799
    2   2020-09-11  afternoon   clock       System tool        2          5.223
    3   2020-11-18  morning    Contacts    Phone_and_SMS       3          1.726
    3   2020-11-18  morning     Google    Productivity         1          4.147
    3   2020-11-18  morning    Instagram    Social             1          0.501
    4   2020-11-18  morning    Truecaller   Communication      1          1.246
    4   2020-11-18  night      Instagram    Social             7         103.774
由于我们的目标是发现不同类型的行为“行为集群”,我想知道如何将多行已用应用减少为每个用户使用的一个应用?为ML算法(如K-Means)设置条目(输入)。 我正在尝试减少数据帧行,以将每个用户表示为一行

我已经调查了按频率和持续时间排列的前五名应用程序,这是真的还是我应该尝试其他东西。我该怎么办?
请帮忙

使用pandas
groupby
&
sort
它首先对每个用户的数据帧进行分组。现在,对于每个组,它按照
频率
持续时间_ToT
对数据帧进行排序,并取前5个元素

df.groupby(['UserId']).apply(lambda x:x.sort_值(按=['Frequency','Duration_ToT'],升序=False)。head(5))

您的要求是什么?您希望列中包含每个用户使用过的应用程序列表,还是希望列中包含每个应用程序的布尔值?如果您能向我们展示您的预期输出,那就更好了。我想要一个列,列出每个用户使用最多的应用程序。请发布您的预期输出不知道输出数据,我试图用一行来表示用户的交互(500行),这是可能的!