使用Python使用通配符名称搜索对所有列求和

使用Python使用通配符名称搜索对所有列求和,python,wildcard,pandas,Python,Wildcard,Pandas,我有一个python数据框,其中有几个列取自CSV文件 例如,data=: Day P1S1 P1S2 P1S3 P2S1 P2S2 P2S3 1 1 2 2 3 1 2 2 2 2 3 5 4 2 我需要的是得到以P1开头的所有列的总和。。。类似P1*的东西,带有通配符 类似于以下内容的内容会产生错误: P1Sum=数据[“P1*”] 为什么要这样对待熊猫?我找到了答案 使用问题中的数据,dataframe: from pa

我有一个python数据框,其中有几个列取自CSV文件

例如,data=:

Day P1S1 P1S2 P1S3 P2S1 P2S2 P2S3
1   1    2    2    3    1    2
2   2    2    3    5    4    2
我需要的是得到以P1开头的所有列的总和。。。类似P1*的东西,带有通配符

类似于以下内容的内容会产生错误:

P1Sum=数据[“P1*”]

为什么要这样对待熊猫?

我找到了答案

使用问题中的数据,dataframe:

from pandas import *

P1Channels = data.filter(regex="P1")
P1Sum = P1Channels.sum(axis=1)

感谢jbssm提供的提示,对于其他想要求和的人,我最后添加了
.sum()
,因此:

P1Sum= P1Channels.sum(axis=1).sum()

列上的列表理解允许在
条件下使用更多筛选器:

In [1]: df = pd.DataFrame(np.arange(15).reshape(5, 3), columns=['P1S1', 'P1S2', 'P2S1'])

In [2]: df
Out[2]: 
   P1S1  P1S2  P2S1
0     0     1     2
1     3     4     5
2     6     7     8
3     9    10    11
4    12    13    14

In [3]: df.loc[:, [x for x in df.columns if x.startswith('P1')]].sum(axis=1)
Out[3]: 
0     1
1     7
2    13
3    19
4    25
dtype: int64

有什么理由让人们否决这个问题吗?我也不明白。我的意思是,这可能是一件非常基本的事情,但我搜索了熊猫的文档,没有找到任何答案。谢谢你,但这不是小事。文档没有说明如何使用函数,只是说有一个函数。无论如何,我找到了答案,我将把它贴在下面。我发现在标准库中使用
fnmatch
,在这些“如果”列表理解中有很大的力量。