Как сложить значения во фрейме данных, в котором столбцы имеют общую часть в качестве элементов в списке

#python #pandas

#питон #панды

Вопрос:

У меня есть фрейм данных в формате:

 d = {'A_B': [1, 2], 'A_C': [3, 4], 'B_C': [5, 6]} df = pd.DataFrame(data=d)  

И список

 li=[A,B,C]  

Теперь я хочу добавить все элементы в строку, где имя столбца начинается с элемента из списка, и вычесть все элементы, где столбец заканчивается элементом из списка.

Результатом было бы:

 index A B C 0 1 3 -1 5 -3-5 1 2 3 -2 6 -4-6  

Как я могу подойти к этому?

Ответ №1:

В вашем случае мы можем сделать split для столбца, а затем объединить их

 s1 = df.copy() s1.columns = s1.columns.str.split('_').str[0] s2 = df.copy() s2.columns = s2.columns.str.split('_').str[1]  out = pd.concat([s1,-s2],axis=1).groupby(level=0,axis=1).sum() Out[468]:   A B C 0 4 4 -8 1 6 4 -10