python - DataFrame 在函数内部修改

标签 python pandas

我遇到了以前从未观察到的函数内部数据框修改问题。有没有一种方法可以处理这个问题,以便不修改初始数据框。

In[30]: def test(df):
    df['tt'] = np.nan
    return df

In[31]: dff = pd.DataFrame(data=[])

In[32]: dff

Out[32]: 
Empty DataFrame
Columns: []
Index: []
In[33]: df = test(dff)

In[34]: dff

Out[34]: 
Empty DataFrame
Columns: [tt]
Index: []

最佳答案

def test(df):
    df = df.copy(deep=True)
    df['tt'] = np.nan
    return df

如果您将数据帧传递给一个函数并对其进行操作并返回相同的数据帧,您将在修改后的版本中获得相同的数据帧。如果你想保留你的旧数据框并使用你的修改创建一个新的数据框,那么根据定义你必须有 2 个数据框。您传入的不想修改的一个和修改过的新的一个。因此,如果您不想更改原始数据框,最好的办法是复制原始数据框。在我的示例中,我将函数中的变量“df”重新绑定(bind)到新复制的数据帧。我使用了复制方法,参数“deep=True”复制了数据框及其内容。您可以在此处阅读更多信息:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.copy.html

关于python - DataFrame 在函数内部修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31614011/

相关文章:

python - 使用乘法创建一个列表,但不让每个列表镜像

python - 无法将更大的 DataFrames 放入队列中

python - property() 的描述符协议(protocol)实现

python - Pandas - 每个点具有不同颜色图例的散点图

python - Python 嵌套字典中的内部值无缘无故地发生变化

python - Pandas to_hdf() TypeError : object of type 'int' has no len()

python - 如何使用 f 字符串遍历数据帧?

python-2.7 - 使用 Python pandas 从电子邮件中提取用户名

python - 展平未知长度的元组

Python:如何保存训练数据集