Ошибка: пропущен 1 обязательный позиционный аргумент: «произошел во время индекса» - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь написать разные имена листов в python на основе разных фреймов данных, созданных из функции groupby для двух столбцов.

list_dfs=[]
TT=Dataframe.groupby(['change','x2'])
for group,name in TT:
    list_dfs.append(group)
writer = pd.ExcelWriter('output.xlsx')

def dt(_,g): 
    for _,g in Dataframe.groupby (Dataframe.index):
        print (g) 
        _.to_excel(writer,g)
        writer.save()

DT=Dataframe.apply(dt)

он продолжает выдавать мне эту ошибку

TypeError: ("dt() missing 1 required positional argument: 'g'", 'occurred at index time')

Ответы [ 2 ]

0 голосов
/ 15 апреля 2019

Я просто делаю маленький трюк следующим образом.

Dataframe['x2']=res
TT=Dataframe.groupby(['change',res])

writer = ExcelWriter('output.xls')

for name,group in TT:
    group.to_excel(writer, sheet_name='Sheet_{}'.format(name))

writer.save()
0 голосов
/ 15 апреля 2019

Ваша функция

def dt(_,g): 

принимает два аргумента.

DataFrame.apply принимает функцию (или лямбду), которая принимает только один аргумент (Series или ndarray).

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.apply.html

Попробуйте изменить сигнатуру функции dt на:

def dt(g):
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...