У меня есть фрейм данных с именами столбцов, которые начинаются с заданного списка префиксов. Я хочу получить сумму значений в кадре данных, сгруппированных по столбцам, которые начинаются с того же префикса.
df = pd.DataFrame([[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]],
columns=['abc', 'abd', 'wxy', 'wxz'])
prefixes = ['ab','wx']
df
abc abd wxy wxz
0 1 2 3 4
1 1 2 3 4
2 1 2 3 4
3 1 2 3 4
Единственный способ выяснить, как это сделать, - циклически перебрать список префиксов, получить столбцы из кадра данных, которые начинаются с этой строки, и затем суммировать результаты.
results = []
for p in prefixes:
results.append([p, df.loc[:, df.columns.str.startswith(p)].values.sum()])
results = pd.DataFrame(results,)
results.set_index(keys=[0], drop=True).T
ab wx
1 12 28
Я надеялся, что есть более элегантный способ сделать это, возможно, с помощью groupby (), но я не мог понять это.