在pandas/gspread脚本中对原始数据帧进行更改的新数据帧



我正在编写一个代码,从使用gspread模块的谷歌表读取数据。

首先,我读取电子表格并将值存储在一个名为df的变量中。然后,我从df创建一个名为df2的变量来进行一些转换(字符串到数字),同时保持df(原始数据库完整)。然而,在df2中进行的这种转换被携带到df(我存储原始数据库的原始变量)。这应该不像那样,更改应该只发生在df2中。

有人知道为什么会这样吗?

请参阅下面的代码:

import gspread
import pandas as pd
sa = gspread.service_account(filename = "keys.json") 
sheet = sa.open("chupacabra") 
worksheet = sheet.worksheet("vaca_loca")
df = pd.DataFrame(worksheet.get("B2:I101"))
df
[df loaded](https://i.stack.imgur.com/lV3GJ.png)
df2 = df
df2["Taxa"] = df2["Taxa"].str.replace(",",".")
df2["Taxa"] = df2["Taxa"].str.replace("%","")
df2["Taxa"] = pd.to_numeric(df2["Taxa"])
df2["Taxa"] = df2["Taxa"]/100
df2
[df2 after string transformation](https://i.stack.imgur.com/cFWOg.png)
df 
[df carrying the transformation changes made in df2](https://i.stack.imgur.com/KsSsa.png)

我试图只在df2中执行转换,而df应该保持完整。

在你的脚本中,我担心你的问题可能是由于引用调用造成的。如果我的理解是正确的,那么下面的修改如何?

:

df2 = df

:

df2 = df.copy()
  • 通过此修改,df被复制为传递值。

最新更新