【发布时间】:2018-06-01 22:47:34
【问题描述】:
我对 Python 比较陌生,但我遇到了一个函数问题。基本上,这个函数应该编辑一个 pandas 数据框并以一个新的对象名称返回它。所以保持原来的对象不变。返回的对象应保存在新对象中。我的问题是,输入对象也会受到影响。即使我将结果保存到新对象,如何防止我的输入对象受到该函数的影响。我读过一些关于不可变和可变对象的文章,但是如何更改我的函数。
import pandas as pd
import numpy as np
msg_items = pd.DataFrame({'Column_A': [10,20,30,40,50,60]})
print('Before: ', msg_items.dtypes)
def justdoit(myframe):
cols = list(myframe)
myframe[cols] = myframe[cols].applymap(np.str)
return myframe
testframe = justdoit(msg_items)
print('After: ', msg_items.dtypes)
实际输出:
Before: Column_A int64
dtype: object
After: Column_A object
dtype: object
预期输出:
Before: Column_A int64
dtype: object
After: Column_A int64
dtype: object
【问题讨论】:
-
myframe[cols] = myframe[cols].applymap(np.str)编辑原始数据框,它不会创建新数据框。 -
我怎样才能创建一个新的,而不是编辑原始数据框?
-
不要用
applymap,用copy新建一个(看我的回答)
标签: python function pandas return