Pandas DataFrame Невозможно использовать функцию назначения. Почему?Python

Программы на Python
Ответить
Anonymous
 Pandas DataFrame Невозможно использовать функцию назначения. Почему?

Сообщение Anonymous »

Я столкнулся с некоторым странным поведением в pandas и надеюсь, что кто-нибудь сможет пролить свет на особенности функции df.assign(...) в кадре данных pandas. Я получаю ошибку ValueError при попытке назначить столбцу, несмотря на то, что функция действительна.

Код: Выделить всё

def is_toc_row(row):
m_sig = m_df.loc[m_df.signature == row.signature]
pct = (~pd.isnull(m_sig.line_type)).sum() / m_sig.shape[0]
return (not pd.isnull(row.line_type)) or (pct < .5)

m_df = m_df.assign(is_toc_row=is_toc_row)
Даёт:

Код: Выделить всё

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Но это работает совершенно нормально:

Код: Выделить всё

for ind, row in m_df.iterrows():
m_df.at[ind, 'is_toc_row'] = is_toc_row(row)
Возникает ли проблема со ссылкой на остальную часть DataFrame в функции? Все, что я вижу в документации, это то, что объект df не может быть изменен, а это не так.
Конечно, я способен найти обходной путь, я просто хочу понять, почему это не работает. для будущего использования.

Подробнее здесь: https://stackoverflow.com/questions/792 ... nction-why
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»