第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

對(duì)行值等于標(biāo)題的列求和 - Pandas

對(duì)行值等于標(biāo)題的列求和 - Pandas

一只甜甜圈 2022-12-20 11:16:13
我正在嘗試對(duì) pandas df 中的列求和,其中該列等于特定值。使用下面的 df,其中['X'] == 'GrV',我想對(duì) cols 求和('GrV A', 'GrV B')。但我正在返回nan值。import pandas as pddf = pd.DataFrame({    'X' : ['GrV', 'GrX', 'GrY', 'GrZ', 'GrV', 'GrX', 'GrY', 'GrZ'],      'GrV A' : [4, 2, 6, 5, 1, 2, 5, 6],                      'GrX A' : [3, 4, 5, 1, 2, 5, 6, 2],     'GrY A' : [5, 2, 2, 6, 5, 1, 5, 4],    'GrZ A' : [1, 2, 5, 5, 2, 1, 5, 4],     'GrV B' : [4, 2, 6, 5, 1, 2, 5, 6],                      'GrX B' : [3, 4, 5, 1, 2, 5, 6, 2],     'GrY B' : [5, 2, 2, 6, 5, 1, 5, 4],    'GrZ B' : [1, 2, 5, 5, 2, 1, 5, 4],                                    })df['Total'] = df.loc[(df['X'] == 'GrV'), ('GrV A', 'GrV B')].sum()df['Total'] = df.loc[(df['X'] == 'GrX'), ('GrX A', 'GrX B')].sum()df['Total'] = df.loc[(df['X'] == 'GrY'), ('GrY A', 'GrY B')].sum()df['Total'] = df.loc[(df['X'] == 'GrZ'), ('GrZ A', 'GrZ B')].sum()預(yù)期輸出:     X  GrV A  GrX A  GrY A  GrZ A  GrV B  GrX B  GrY B  GrZ B  Total0  GrV      4      3      5      1      4      3      5      1      81  GrX      2      4      2      2      2      4      2      2      82  GrY      6      5      2      5      6      5      2      5      43  GrZ      5      1      6      5      5      1      6      5     104  GrV      1      2      5      2      1      2      5      2      25  GrX      2      5      1      1      2      5      1      1     106  GrY      5      6      5      5      5      6      5      5     107  GrZ      6      2      4      4      6      2      4      4      8
查看完整描述

4 回答

?
慕尼黑8549860

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊

您可以通過使用filter獲取列 Gr,使用where通過split(獲取 GrV,GrX,...部分)獲得的列名的第一個(gè)元素等于列 X 并sum沿列:


df['Total'] = (df.filter(like='Gr')

                 .where(lambda x: df['X'].to_numpy()[:, None]

                                  == x.columns.str.split(' ').str[0].to_numpy())

                 .sum(axis=1)

              )

print (df)

     X  GrV A  GrX A  GrY A  GrZ A  GrV B  GrX B  GrY B  GrZ B  Total

0  GrV      4      3      5      1      4      3      5      1    8.0

1  GrX      2      4      2      2      2      4      2      2    8.0

2  GrY      6      5      2      5      6      5      2      5    4.0

3  GrZ      5      1      6      5      5      1      6      5   10.0

4  GrV      1      2      5      2      1      2      5      2    2.0

5  GrX      2      5      1      1      2      5      1      1   10.0

6  GrY      5      6      5      5      5      6      5      5   10.0

7  GrZ      6      2      4      4      6      2      4      4    8.0


查看完整回答
反對(duì) 回復(fù) 2022-12-20
?
三國紛爭

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個(gè)贊

這是另一種方法:


for col in df['X'].tolist():

    df['Total_'+col] = np.where(df['X']==col, df[col+' A'] + df[col+' B'], np.NaN)


cols = [col for col in df.columns if col.startswith('Total_')]

df['Total'] = df[cols].sum(axis=1)

df.drop(columns=cols, inplace=True)

print(df)


     X  GrV A  GrX A  GrY A  GrZ A  GrV B  GrX B  GrY B  GrZ B  Total

0  GrV      4      3      5      1      4      3      5      1    8.0

1  GrX      2      4      2      2      2      4      2      2    8.0

2  GrY      6      5      2      5      6      5      2      5    4.0

3  GrZ      5      1      6      5      5      1      6      5   10.0

4  GrV      1      2      5      2      1      2      5      2    2.0

5  GrX      2      5      1      1      2      5      1      1   10.0

6  GrY      5      6      5      5      5      6      5      5   10.0

7  GrZ      6      2      4      4      6      2      4      4    8.0


查看完整回答
反對(duì) 回復(fù) 2022-12-20
?
米琪卡哇伊

TA貢獻(xiàn)1998條經(jīng)驗(yàn) 獲得超6個(gè)贊

這是一種方法:將列 X 附加到索引,獲得一對(duì)索引和列,其中可以在列中找到新索引中的值,使用結(jié)果值索引數(shù)據(jù)幀(使用loc),堆棧,取消堆棧和得到總數(shù)


#append column X to the index

df = df.set_index("X",append=True)


from itertools import product


#get pairing of index and column, where index is in column

index = [(first,second, last)

         for (first,second), last 

         in product(df.index,df.columns)

         if second in last]


#stack, index with the index variable,

#unstack, get the sum

#and assign to Total

df['Total'] = df.stack().loc[index].unstack().sum(axis=1)


df


           GrV A    GrX A   GrY A   GrZ A   GrV B   GrX B   GrY B   GrZ B   Total

X                                   

0   GrV      4       3       5       1       4       3       5      1       8.0

1   GrX      2       4       2       2       2       4       2      2       8.0

2   GrY      6       5       2       5       6       5       2      5       4.0

3   GrZ      5       1       6       5       5       1       6      5      10.0

4   GrV      1       2       5       2       1       2       5      2       2.0

5   GrX      2       5       1       1       2       5       1      1      10.0

6   GrY      5       6       5       5       5       6       5      5      10.0

7   GrZ      6       2       4       4       6       2       4      4       8.0


查看完整回答
反對(duì) 回復(fù) 2022-12-20
?
慕田峪4524236

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊

讓我們melt試試groupby


s=df.reset_index().melt(['index','X']).loc[lambda x : x['X']==x['variable'].str.split(' ').str[0]].groupby('index').value.sum()

df['new']=s

df

     X  GrV A  GrX A  GrY A  GrZ A  GrV B  GrX B  GrY B  GrZ B  new

0  GrV      4      3      5      1      4      3      5      1    8

1  GrX      2      4      2      2      2      4      2      2    8

2  GrY      6      5      2      5      6      5      2      5    4

3  GrZ      5      1      6      5      5      1      6      5   10

4  GrV      1      2      5      2      1      2      5      2    2

5  GrX      2      5      1      1      2      5      1      1   10

6  GrY      5      6      5      5      5      6      5      5   10

7  GrZ      6      2      4      4      6      2      4      4    8


查看完整回答
反對(duì) 回復(fù) 2022-12-20
  • 4 回答
  • 0 關(guān)注
  • 134 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)