gpt4 book ai didi

python - 如何正确舍入数据框列?

转载 作者:行者123 更新时间:2023-12-01 03:33:32 27 4
gpt4 key购买 nike

我正在尝试对数据框中的两列进行舍入。但是,我得到的结果与原始结果相同。代码如下:

def lonlat_round(dataframe, decimal_places):
dataframe[['lon','lat']] = dataframe[['lon','lat']].apply(pd.to_numeric)
dataframe['lon'] = dataframe['lon'].round(decimal_places)
dataframe['lat'] = dataframe['lat'].round(decimal_places)
return dataframe

dat = pd.DataFrame({'lon': [1.1, 2.2, 3.3], 'lat': [5.5, 6.6, 7.7]})
dat_new = lonlat_round(dataframe=dat, decimal_places=0)
dat_new == dat

而且这一切都是真的……这是为什么?如何改变值而不是外观?谢谢!

最佳答案

您在函数中引用了一个引用,因此当您调用 round 时,您还修改了传入的 df:

In [7]:    
dat

Out[7]:
lat lon
0 6 1
1 7 2
2 8 3

In [10]:
dat_new

Out[10]:
lat lon
0 6 1
1 7 2
2 8 3

如果您对传入的 df 进行了 copy(),那么您将看到现在所有值的比较都显示 False:

In [11]:    
def lonlat_round(df, decimal_places):
dataframe = df.copy()
dataframe[['lon','lat']] = dataframe[['lon','lat']].apply(pd.to_numeric)
dataframe['lon'] = dataframe['lon'].round(decimal_places)
dataframe['lat'] = dataframe['lat'].round(decimal_places)
return dataframe
dat = pd.DataFrame({'lon': [1.1, 2.2, 3.3], 'lat': [5.5, 6.6, 7.7]})
dat_new = lonlat_round(df=dat, decimal_places=0)
dat_new == dat

Out[11]:
lat lon
0 False False
1 False False
2 False False

关于python - 如何正确舍入数据框列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40597619/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com