我有一个大约1mn行的 Big Data 集,大约5000个缺少的坐标(我想用"city"类别的中值填充它们.除了fillna,一切都正常,如何实现?

city = ['London', 'Paris', 'Vienna', 'Milan','London', 'Paris', 'Vienna', 'Milan']
lat = [51.510843900000005, 48.8671391, 48.204465500000005, 45.4787357, 51.510843900000005, 48.8671391, None,  None]
lng = [-0.1424476, 2.328075, 16.3686397, 9.1961308, -0.14244, 2.329, None, None]

data = pd.DataFrame(list(zip(city, lat, lng)),columns =['city', 'lat', 'lng'])

display(data['lat'].isna().sum())  # 2
display(data['lng'].isna().sum())  # 2

for city_name in set(data['city']):
    data[data['city'] == city_name ]['lat'].fillna(data[data['city'] == city_name ]['lat'].median())
    data[data['city'] == city_name ]['lng'].fillna(data[data['city'] == city_name ]['lng'].median())
    print(city_name, data[data['city'] == city_name ]['lat'].median(),data[data['city'] == city_name ]['lng'].median())

display(data['lat'].isna().sum())  # 2
display(data['lng'].isna().sum())  # 2 

推荐答案

您可以:

data.groupby("city").transform(lambda x: x.fillna(x.median()))

先用groupby表示城市,然后用transform表示fillna并计算中值.(您可以使用任何数学运算)

Python相关问答推荐

无法通过python-jira访问jira工作日志(log)中的 comments

将图像拖到另一个图像

如何请求使用Python将文件下载到带有登录名的门户网站?

名为__main__. py的Python模块在导入时不运行'

为什么np. exp(1000)给出溢出警告,而np. exp(—100000)没有给出下溢警告?

如何使用Numpy. stracards重新编写滚动和?

在单次扫描中创建列表

如何防止Pandas将索引标为周期?

Pandas—MultiIndex Resample—我不想丢失其他索引的信息´

在Python中控制列表中的数据步长

jsonschema日期格式

Js的查询结果可以在PC Chrome上显示,但不能在Android Chrome、OPERA和EDGE上显示,而两者都可以在Firefox上运行

仅使用预先计算的排序获取排序元素

如何提高Pandas DataFrame中随机列 Select 和分配的效率?

根据过滤后的牛郎星图表中的数据计算新系列

Pandas 删除只有一种类型的值的行,重复或不重复

try 在单个WITH_COLUMNS_SEQ操作中链接表达式时,使用Polars数据帧时出现ComputeError

为什么这个正则表达式没有捕获最后一次输入?

简化通用属性的创建

通过PyTorch中的MIN函数传递渐变