Как использовать сводную / групповую для одного столбца и объединить другие? - PullRequest
1 голос
/ 27 марта 2019

Я хотел бы составить сводную таблицу / сводную таблицу на основе одного столбца (Месяца) и создать другие столбцы. Ключевым моментом здесь является то, что я не знаю ожидаемых имен столбцов (Месяц и Расчетный). Поэтому имена столбцов info1 и info2 могут измениться, , поэтому я не могу жестко их кодировать , но я могу жестко кодировать Месяц и Расчет. ввод: input

Я уже попробовал сводные таблицы, и он не показывает все столбцы и не делает то, что мне нужно.

import pandas as pd
from collections import OrderedDict

d = {'Month': [1, 2, 2],
     'Calculated': [300, 400, 460],
     'info1': ["my info", "i really need the tech", "some more info"], 
     'info2': ["sales are good", "lets do more tech", "my third line"]}

df = pd.DataFrame(data=d)

df.to_csv("myfile.csv")


df1 = df.pivot_table(index = ['Month'], aggfunc=lambda x: ' '.join(x)).reset_index()

df1.to_csv("myfile1.csv")

Я ожидал, что все столбцы будут сгруппированы по месяцам и объединят другие столбцы. Ожидаемый результат: expected output

Пожалуйста, не беспокойтесь о части csv, я сделал это, чтобы сделать скриншот для этого вопроса.

Решение:

df.astype(str).pivot_table(index = ['Month'], aggfunc=lambda x: '\n'.join(x)).reset_index().reindex(columns=df.columns)

1 Ответ

1 голос
/ 27 марта 2019

Сначала необходимо изменить тип данных, используя astype(str)

df.astype(str).pivot_table(index = ['Month'], aggfunc=lambda x: '\n'.join(x)).reset_index()
...