假设我有一个熊猫数据框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'>
但是,当我用df.apply()
处理所有x的内容时,返回类型更改为pandas系列。
# 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()
的熊猫官方网站,它说它可以返回序列或数据框。
返回:已应用:系列或DataFrame
如何在df.apply()
之后将数据结构保留为pandas数据框?
谢谢!
答案 0 :(得分:3)
您可以在此处使用与DataFrame
一起使用的操作-DataFrame.astype
转换为string
和DataFrame.replace
:
csv_df = csv_df[csv_df.columns[2:]].astype(str).replace(',','.')
如果需要解决方案,尤其是通过某些仅在Series中工作的功能进行工作时,
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 :(得分:1)
如果这有帮助,只需传递result_type ='expand'
df.apply(lambda x: [4, 7], axis=1, result_type='expand')