按数据分组到数据帧列

2024-06-23 18:36:04 发布

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

我有下面的数据帧。描述每个用户居住的城市

       City     Name    Date
0   Seattle    Alice    2017
1   Seattle      Bob    2011
2  Portland  Mallory    2010
3   Seattle  Mallory    2016
4   Memphis      Bob    2012
5  Portland  Mallory    2013

你能和熊猫一起实现以下目标吗

     Name     City1    Date1   City2   Date2   City3    Date3
0   Alice     Seattle  2017    NaN     NaN     NaN      NaN
1   Bob       Seattle  2011    Memphis 2012    NaN      NaN
2   Mallory   Portland 2010    Seattle 2016    Portland 2013

非常感谢


Tags: 数据用户namecity目标datenanbob
1条回答
网友
1楼 · 发布于 2024-06-23 18:36:04

您可以将groupby与自定义函数一起使用,其中创建新的DataFrame,然后^{},按^{}对第二级MultiIndex排序,最后使用join将其删除:

df1 = df.groupby('Name')['City','Date']
        .apply(lambda x: pd.DataFrame(x.values, 
                                      columns = ['City','Date'], 
                                      index = np.arange(1, len(x) + 1).astype(str)))
        .unstack()
df1 = df1.sort_index(axis=1, level=1).replace({None:np.nan})
df1.columns = df1.columns.map(''.join)
print (df1)
            City1  Date1    City2   Date2     City3   Date3
Name                                                       
Alice     Seattle   2017      NaN     NaN       NaN     NaN
Bob       Seattle   2011  Memphis  2012.0       NaN     NaN
Mallory  Portland   2010  Seattle  2016.0  Portland  2013.0

相关问题 更多 >

    热门问题