У меня проблема с методом Apply () Pandas DataFrame. Моя проблема заключается в том, что Apply () может вернуть либо серию, либо DataFrame, в зависимости от типа возврата входной функции; Однако, когда кадр пуст, Apply () (почти) всегда возвращает DataFrame. Так что я не могу написать код, который ожидает серии. Вот пример: < /p>
import pandas as pd
def area_from_row(row):
return row['width'] * row['height']
def add_area_column(frame):
# I know I can multiply the columns directly, but my actual function is
# more complicated.
frame['area'] = frame.apply(area_from_row, axis=1)
# This works as expected.
non_empty_frame = pd.DataFrame(data=[[2, 3]], columns=['width', 'height'])
add_area_column(non_empty_frame)
# This fails!
empty_frame = pd.DataFrame(data=None, columns=['width', 'height'])
add_area_column(empty_frame)
< /code>
Есть ли стандартный способ справиться с этим? Я могу сделать следующее, но это глупо: < /p>
def area_from_row(row):
# The way we respond to an empty row tells pandas whether we're a
# reduction or not.
if not len(row):
return None
return row['width'] * row['height']
< /code>
(я использую Pandas 0.11.0, но я также проверил это на 0,12,0-1100-G0C30665.) < /p>
Подробнее здесь: https://stackoverflow.com/questions/199 ... -dataframe
Вызов Apply () на пустой пандас DataFrame ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение