某些COLS的A组数据框架,但请保留另一个COL
我有这样的数据框架:
data = {'Name':['Tom', 'Nick', 'Tom', 'Nick'],
'Last Name':['Holland', 'Jonas', 'Holland', 'Jonas'],
'Year':[2020, 2019, 2019, 2020],
'Payment': [12345, 12345, 32451,91782]
}
df = pd.DataFrame(data)
名称 | 姓氏 | 付款 | 12345 | |
---|---|---|---|---|
0 | 汤姆 | ·霍兰德 | 2020 | 2019 |
1 | 尼克· | 2019 | 12345 | 2 |
汤姆 | · | 霍兰德 | 32451 | 3 |
尼克 | · | 乔纳斯 | 2020 | 91782 |
,我想根据第一个和姓
乔纳斯 | 姓氏 | 付款 | Tom |
---|---|---|---|
汤姆 | ·霍兰德( | Holland) 2020 | 12345 |
2019 | 32451 | ||
尼克· | 乔纳斯(Nick Jonas) | 2019 | 12345 |
2020 | 91782 |
我正在尝试
cols = ['Year','Payment']
df = df[cols].groupby(df_funpub_2[['Last Name', 'Name']])
,但我会收到以下错误
valueerror:'< class'pandas.core.frame.dataframe'>'''不是一维
I have a dataframe like this :
data = {'Name':['Tom', 'Nick', 'Tom', 'Nick'],
'Last Name':['Holland', 'Jonas', 'Holland', 'Jonas'],
'Year':[2020, 2019, 2019, 2020],
'Payment': [12345, 12345, 32451,91782]
}
df = pd.DataFrame(data)
Name | Last Name | Year | Payment | |
---|---|---|---|---|
0 | Tom | Holland | 2020 | 12345 |
1 | Nick | Jonas | 2019 | 12345 |
2 | Tom | Holland | 2019 | 32451 |
3 | Nick | Jonas | 2020 | 91782 |
And I want to group the data according to the first and last name, but keeping the other columns, like this :
Name | Last Name | Year | Payment |
---|---|---|---|
Tom | Holland | 2020 | 12345 |
2019 | 32451 | ||
Nick | Jonas | 2019 | 12345 |
2020 | 91782 |
I was trying
cols = ['Year','Payment']
df = df[cols].groupby(df_funpub_2[['Last Name', 'Name']])
but i get the following error
ValueError: Grouper for '<class 'pandas.core.frame.DataFrame'>' not 1-dimensional
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
列是每个组唯一的
我假设
年 ','付款':'sum'})
否则,您可能需要将
年
作为一个组。编辑
要实现您所需的结果,
年
必须作为组包括:df.groupby(['name','','姓氏','年' ])。agg({'付款':'sum'})
I assume the
Year
column is unique for each group so this should work:df.groupby(['Name', 'Last Name']).agg({'Year': 'last', 'Payment': 'sum'})
Otherwise, you might want to include
Year
as a group.EDIT
To achieve your desired outcome,
Year
must be included as a group so:df.groupby(['Name', 'Last Name', 'Year']).agg({'Payment': 'sum'})