如果索引/标题在数据帧中包含某个整数,如何选择行和列?

2024-09-02 21:35:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个输入/输出数据,其中索引和标题有代表不同行业类型的数字。我想创建新的列和行,这些列和行表示属于特定行业组的列和行的总和。为了给出一个示例(请参考下面我手动创建的示例),我想创建一个新的行/列,该行/列的索引/标题为US_industry_135/CAN_industry_135,该行/列的行业编号为1、3或5。下面的示例是我手动创建的一个小集合,但我想知道是否有方法将条件放入求和中,以便对索引/标题中包含属于特定数字的数字的行/列求和。我可以从标题/索引中提取数字并创建一个单独的行/列,但我想知道是否有一种方法可以直接从索引/标题中检查而不创建新的列。提前感谢您的帮助

import pandas as pd
data = {'US1':[3, 2, 1, 4,3,2,1,4,2,3,7,9],'US2':[8,4,9,2,1,3,4,2,5,6,18,11],'US3':[2,4,2,2,3,2,4,2,3,2,7,6],
    'US4':[7,4,8,2,2,3,2,4,6,8,17,15],'US5':[2,4,3,2,2,4,1,3,2,4,7,11],
   'CAN1':[3, 2, 1, 4,6,2,3,1,4,2,10,5],'CAN2':[8,4,9,2,5,7,3,5,7,1,22,13],'CAN3':[2,4,2,2,4,5,2,3,3,2,8,10],
    'CAN4':[7,4,8,2,2,3,1,3,2,4,17,10],'CAN5':[2,4,3,2,6,7,5,4,0,9,11,20],
   'US_IND_135':[7,10,6,8,8,8,6,9,7,9,21,26],'CAN_IND_135':[7,10,6,8,16,14,10,8,7,13,29,35]}
df = pd.DataFrame(data, index=['US1','US2','US3','US4','US5','CAN1','CAN2','CAN3','CAN4','CAN5','US_IND_135','CAN_IND_135'])
df

Tags: 方法标题示例data数字手动canpd
1条回答
网友
1楼 · 发布于 2024-09-02 21:35:29

让我们定义感兴趣的索引列表:

idx = [1, 3, 5]

使用指定的列进行求和:

df[['US' + str(i) for i in idx]].sum(axis = 1)

或者,如果要将求和列连接到dataframe,可以将结果指定给变量:

s1 = df[['US' + str(i) for i in idx]].sum(axis = 1)
s1.name = 'NEW_US_IND_' + ''.join("{0}".format(i) for i in idx)

并添加新列:

df.join(s1)

相关问题 更多 >