我有以下代碼,旨在從 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 應該有兩個不同的結果,但輸出是相同的。我嘗試過 df.copy() 和 df.copy(deep=True)使用 Pandas 1.0.5 和 Python 3.6一些論壇指出這是一個錯誤,但我想檢查是否有解決方法或修復此問題。我想到的另一種方法是將原始 Excel 文檔讀入多個數據幀,但這似乎不可持續且資源繁重。編輯:示例數據如下:System DATE SENT STATUS DATE PAID0 One 2020-10-01 OPEN NaT1 One 2020-10-01 OPEN NaT2 THREE 2020-10-01 SR 2020-10-073 One 2020-10-01 DUP NaT4 One 2020-10-01 OPEN NaT5 One 2020-10-01 OPEN NaT6 THREE 2020-10-01 OPEN NaT7 One 2020-10-01 DUP NaT8 THREE 2020-10-01 AR 2020-07-319 THREE 2020-10-01 OPEN NaT10 One 2020-10-01 AR 2020-08-2111 One 2020-10-01 DUP NaT12 One 2020-10-01 OPEN NaT13 One 2020-10-01 DUP NaT14 One 2020-10-01 DUP NaT15 One 2020-10-01 DUP NaT16 One 2020-10-01 DUP NaT17 THREE 2020-10-01 OPEN NaT18 One 2020-10-01 OPEN NaT19 One 2020-10-01 OPEN NaT
2 回答

慕森卡
TA貢獻1806條經驗 獲得超8個贊
問題實際上是一個拼寫錯誤:
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']
添加回答
舉報
0/150
提交
取消