Python 3.x 如何按DataFrame的一列分组,同时在另一列中追加相应的行,并乘以其列中自身的数量?

Python 3.x 如何按DataFrame的一列分组,同时在另一列中追加相应的行,并乘以其列中自身的数量?,python-3.x,pandas,dataframe,group-by,grouping,Python 3.x,Pandas,Dataframe,Group By,Grouping,假设我们有两列DataFrame,col1有一个唯一的数字,而col2有重复的数字,如下所示 我想这样: 试试: # Setup df = pd.DataFrame({'col1':{0:89,1:53,2:97,3:106,4:115,5:56,6:55,7:105,8:71,9:70,10:110},'col2':{0:205,1:205,2:205,3:203,4:203,5:203,6:202,7:201,8:200,9:200,10:198}}) df_new = df.grou

假设我们有两列DataFrame,col1有一个唯一的数字,而col2有重复的数字,如下所示

我想这样:

试试:

# Setup 
df = pd.DataFrame({'col1':{0:89,1:53,2:97,3:106,4:115,5:56,6:55,7:105,8:71,9:70,10:110},'col2':{0:205,1:205,2:205,3:203,4:203,5:203,6:202,7:201,8:200,9:200,10:198}})

df_new = df.groupby('col2', sort=False)['col1'].apply(list).reset_index()
df_new['col2'] = df_new['col1'].str.len().astype(str) + '*' + df_new.pop('col2').astype(str)
print(df_new)
[外]


这将返回
AttributeError:只能使用带字符串值的.str访问器它不应该
col1
应该是groupby之后的列表。你说得对吗?是的,你说得对,我的代码有问题。CheeseCol1是一个类似于['89'、'53'、'97']的字符串列表。如果需要
str
列表而不是
int
,请使用
df_new=df['col1'].astype(str).groupby(df['col2',sort=False)。apply(list)。reset_index()
             col1   col2
0    [89, 53, 97]  3*205
1  [106, 115, 56]  3*203
2            [55]  1*202
3           [105]  1*201
4        [71, 70]  2*200
5           [110]  1*198