Я думаю, что вы можете внести некоторые изменения в свой формат данных при создании словаря, тогда вы можете легко преобразовать его в DataFrame:
input:
a={'Dates':['2012-06-08','2012-06-10'],'Date_value':[388,389]}
output:
{'Date_value': [388, 389], 'Dates': ['2012-06-08', '2012-06-10']}
input:
aframe=DataFrame(a)
output: будет вашим DataFrame
Вам просто нужно использовать какое-то редактирование текста где-то вроде Sublime или, может быть, Excel .
Во-первых, необходимо определить, какие столбцы содержат какой префикс. Затем мы используем это для выполнения groupby
.
grouper = [next(p for p in prefixes if p in c) for c in df.columns]
u = df.groupby(grouper, axis=1).sum()
ab wx
0 3 7
1 3 7
2 3 7
3 3 7
Почти там, сейчас,
u.sum().to_frame().T
ab wx
0 12 28
Другой вариант использует np.char.startswith
и argmax
для векторизации:
idx = np.char.startswith(
df.columns.values[:, None].astype(str), prefixes).argmax(1)
(pd.Series(df.groupby(idx, axis=1).sum().sum().values, index=prefixes)
.to_frame()
.transpose())
ab wx
0 12 28
Использование groupby
после разрезания столбцов
df.groupby(df.columns.str[:-1],axis=1).sum().sum().to_frame().T
Out[317]:
ab wx
0 12 28
Обновление
l=sum([[x]*df.columns.str.startswith(x).sum() for x in prefixes],[])
df.groupby(l,axis=1).sum().sum().to_frame().T
Out[329]:
ab wx
0 12 28