Python 3.x 如何按DataFrame的一列分组,同时在另一列中追加相应的行,并乘以其列中自身的数量?
假设我们有两列DataFrame,col1有一个唯一的数字,而col2有重复的数字,如下所示 我想这样: 试试: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
# 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