簡體   English   中英

數據幀pandas中使用逗號的多個值

[英]more than one value with comma in dataframe pandas

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

說明

  1. 第一個set_index按列colum2
  2. 通過split創建DataFrame
  3. 通過stack重塑
  4. reset_index按列創建索引
  5. groupbysum
  6. 如有必要,上次重命名列

另一種方案:

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

說明

  1. 通過split創建列表
  2. 通過len獲取lsits的長度
  3. 最后repeat列並展平colum1
  4. groupbysum

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM