微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

熊猫副本正在更改原始数据帧,即使使用copydeep = True

如何解决熊猫副本正在更改原始数据帧,即使使用copydeep = True

我有以下代码试图从1个数据帧创建2个单独的表。这些表应用了不同的过滤器。 我发现的是,一旦应用了第一个过滤器,原始数据帧就会“改变”。

df_orig = pd.read_excel('JRMaster.xlsm')
df_orig.columns = map(str.upper,df_orig.columns)
df_orig['SYstem'] = df_orig['SYstem'].str.upper()
df_orig['STATUS'] = df_orig['STATUS'].str.upper()

df = df_orig.copy(deep=True)
df_copy_all = df_orig.copy(deep=True)

df = df[(df['DATE PAID'].dt.month.between(10,10)) & (df['DATE PAID'].dt.year == 2020)]
df2 = df_copy_all[(df_copy_all['DATE SENT'].dt.month.between(10,10)) & (df['DATE SENT'].dt.year == 2020)]

df和df2应该有2个不同的结果,但是输出是相同的。 我已经尝试过df.copy()和df.copy(deep = True)

使用熊猫1.0.5和Python 3.6

一些论坛指出这是一个错误,但我想检查是否有解决方法解决方法

我考虑过的另一种方法是将原始的excel文档读入多个数据帧,但这似乎不可持续且占用大量资源。

编辑:

以下示例数据:

System  DATE SENT   STATUS  DATE PAID
0   One 2020-10-01  OPEN    NaT
1   One 2020-10-01  OPEN    NaT
2   THREE   2020-10-01  SR  2020-10-07
3   One 2020-10-01  DUP NaT
4   One 2020-10-01  OPEN    NaT
5   One 2020-10-01  OPEN    NaT
6   THREE   2020-10-01  OPEN    NaT
7   One 2020-10-01  DUP NaT
8   THREE   2020-10-01  AR  2020-07-31
9   THREE   2020-10-01  OPEN    NaT
10  One 2020-10-01  AR  2020-08-21
11  One 2020-10-01  DUP NaT
12  One 2020-10-01  OPEN    NaT
13  One 2020-10-01  DUP NaT
14  One 2020-10-01  DUP NaT
15  One 2020-10-01  DUP NaT
16  One 2020-10-01  DUP NaT
17  THREE   2020-10-01  OPEN    NaT
18  One 2020-10-01  OPEN    NaT
19  One 2020-10-01  OPEN    NaT

解决方法

看起来deepcopypandas不兼容。

请参阅此Deep copying in Pandas

,

问题实际上出在错字上:

df2 = df_copy_all[(df_copy_all['DATE SENT'].dt.month.between(10,10)) & (df['DATE SENT'].dt.year == 2020)]

应该是

df2 = df_copy_all[(df_copy_all['DATE SENT'].dt.month.between(10,10)) & (df2['DATE SENT'].dt.year == 2020)]

错误发生在:df2 ['DATE SENT'],我有df ['DATE SENT']

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?