Ответ 1
Я нашел ответ.
Используя данные, dataframe из вопроса:
from pandas import *
P1Channels = data.filter(regex="P1")
P1Sum = P1Channels.sum(axis=1)
У меня есть dataframe в python pandas с несколькими столбцами, взятыми из файла 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 *" ]
Есть ли способ сделать это с помощью pandas?
Я нашел ответ.
Используя данные, dataframe из вопроса:
from pandas import *
P1Channels = data.filter(regex="P1")
P1Sum = P1Channels.sum(axis=1)
Спасибо за подсказку jbssm, для всех, кто ищет общую сумму, я закончил добавление .sum()
в конец, так что:
P1Sum= P1Channels.sum(axis=1).sum()
Учет списков в столбцах позволяет использовать больше фильтров в if
:
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