Как вернуть dataframe после df.apply () - PullRequest
1 голос
/ 18 марта 2019

Допустим, у меня есть фрейм данных панд df

[In] df = pd.read_csv('data.csv')

Из-за пустого столбца я отбрасываю последние два столбца df

[In] csv_df.drop(csv_df.columns[-2:], axis = 1, inplace=True)
[In] print(type(csv_df[csv_df.columns[2:]]))

Возвращаемая структура данных:

[Out] <class 'pandas.core.frame.DataFrame'>

Однако, когда я манипулирую содержимым всех x с помощью df.apply(), тип возвращаемого значения изменяется на ряд панд.

# replace comma
[In] csv_df = csv_df[csv_df.columns[2:]].apply(lambda x: str(x).replace(',','.'))
[In] print(type(csv_df))
[Out] <class 'pandas.core.series.Series'>

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

Возвращает: применяется: Series или DataFrame

Мой вопрос

Как я могу сохранить структуру данных в качестве pandas dataframe после df.apply()?

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 18 марта 2019

Вы можете использовать операцию, работая с DataFrame здесь - DataFrame.astype для преобразования в string с и DataFrame.replace:

csv_df = csv_df[csv_df.columns[2:]].astype(str).replace(',','.')

Если необходимо решение с приложением, особенно если оно работает с какой-либо функцией, работающей только в серии:

csv_df = csv_df[csv_df.columns[2:]].apply(lambda x: x.astype(str).str.replace(',','.'))

Функция str.lower работает только в Series:

csv_df = csv_df[csv_df.columns[2:]].apply(lambda x: x.astype(str).str.lower().str.replace(',','.'))
1 голос
/ 18 марта 2019

Если это может помочь, просто передайте result_type = ’expand’

df.apply(lambda x: [4, 7], axis=1, result_type='expand')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...