在函数内部修改的数据帧

2024-05-16 19:41:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我面对的是一个函数内部的数据帧的修改,这是我以前从未观察过的。是否有一种方法来处理这个问题,而不修改初始数据帧?

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: []

Tags: columns数据方法函数intestdataframedf
1条回答
网友
1楼 · 发布于 2024-05-16 19:41:50
def test(df):
    df = df.copy(deep=True)
    df['tt'] = np.nan
    return df

如果将数据帧传递到函数中并对其进行操作并返回相同的数据帧,则在修改后的版本中将获得相同的数据帧。如果要保留旧数据帧并用修改创建新数据帧,那么根据定义,必须有两个数据帧。你传入的那个不想修改的和新的那个被修改的。因此,如果不想更改原始数据帧,最好是复制原始数据帧。在我的示例中,我将函数中的变量“df”反弹到新复制的数据帧。我使用copy方法,参数“deep=True”生成数据帧及其内容的副本。您可以在这里阅读更多内容:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.copy.html

相关问题 更多 >