gpt4 book ai didi

python - 如何用 Pandas 对象中的子字符串替换值?

转载 作者:太空宇宙 更新时间:2023-11-03 12:36:24 24 4
gpt4 key购买 nike

我在 Latitude 数据集中有坐标,每个坐标都以字母(例如 N)结尾。

仅检索数字并替换原始值的最佳方法是什么?

我的尝试是:

raw['LATITUDE'] = raw.loc[(raw['LATITUDE'].str.len() == 9)].str[0:8]

但是我收到一条 AttributeError 消息。

AttributeError: 'DataFrame' object has no attribute 'str'

我也尝试用正则表达式替换这些值,但我不确定如何让它成功。

如果有任何建议,我将不胜感激。

enter image description here

最佳答案

好吧,让我们澄清一些事情:

  1. 您似乎在使用混合数据类型。打印出raw['LATITUDE'].apply(type).nunique()确认;它应该 > 1。

  2. 您正在处理地理数据。您的很多值都是无效的(0),我建议将其强制转换为 NaN,因为这更有意义地表示缺失数据

要解决您的问题,请尝试获取最后一个字符 (:-1) 之前的所有内容:

raw['LATITUDE'] = raw['LATITUDE'].str[:-1].astype(float)
raw

LATITUDE
0 NaN
1 38.72496
2 39.90272
3 38.72927
4 39.91152
5 39.84841
6 NaN
7 NaN
8 NaN
9 39.84941

这有效尽管您的列是混合数据类型,因为str 访问器旨在将非字符串行强制转换为 NaN。

如果您希望保留 0(我不推荐这样做),请使用像 np.where 这样的快速替换函数;

raw['LATITUDE'] = np.where(
raw.LATITUDE.eq(0), 0, raw['LATITUDE'].str[:-1].astype(float)
)

raw
LATITUDE
0 0.00000
1 38.72496
2 39.90272
3 38.72927
4 39.91152
5 39.84841
6 0.00000
7 0.00000
8 0.00000
9 39.84941

我不建议保留 0 的原因是因为使用 NaN 来划分缺失数据而不是 0 在语义上更有意义。

关于python - 如何用 Pandas 对象中的子字符串替换值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49971160/

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