如何解决熊猫副本正在更改原始数据帧,即使使用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
解决方法
看起来deepcopy
与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 举报,一经查实,本站将立刻删除。