colum 1, colum2
a,b,c 30
b,c,f 40
a,g,z 50
.
.
.
使用带有col1,2的上述数据帧,我希望将数据帧与col3,4一起放在数据帧下面.此外,col1由带逗号的值组成.col4由col3之后的col2之和组成.
column3, column4
a 80
b 70
c 70
f 40
g 50
z 50
使用:
df = (df.set_index('colum2')['colum1']
.str.split(',', expand=True)
.stack()
.reset_index(name='column3')
.groupby('column3', as_index=False)['colum2']
.sum()
.rename(columns={'colum2':'column4'})
)
print (df)
column3 column4
0 a 80
1 b 70
2 c 70
3 f 40
4 g 50
5 z 50
Run Code Online (Sandbox Code Playgroud)
说明:
set_index是专栏colum2DataFrame者splitstackreset_indexgroupby 和聚合 sum另一种方案:
from itertools import chain
a = df['colum1'].str.split(',')
lens = a.str.len()
df = pd.DataFrame({
'column3' : list(chain.from_iterable(a)),
'column4' : df['colum2'].repeat(lens)
}).groupby('column3', as_index=False)['column4'].sum()
print (df)
column3 column4
0 a 80
1 b 70
2 c 70
3 f 40
4 g 50
5 z 50
Run Code Online (Sandbox Code Playgroud)
说明:
| 归档时间: |
|
| 查看次数: |
51 次 |
| 最近记录: |