Pandas 为数据帧列赋值

Pandas 为数据帧列赋值,pandas,dataframe,Pandas,Dataframe,在下面的代码中,没有填充数据帧df5。我只是将值分配给dataframe的列,并且我已经预先指定了该列。当我打印数据帧时,它返回一个空数据帧。不确定我是否遗漏了什么 任何帮助都将不胜感激 import math import pandas as pd columns = ['ClosestLat','ClosestLong'] df5 = pd.DataFrame(columns=columns) def distance(pt1, pt2): return math.sqrt

在下面的代码中,没有填充数据帧df5。我只是将值分配给dataframe的列,并且我已经预先指定了该列。当我打印数据帧时,它返回一个空数据帧。不确定我是否遗漏了什么

任何帮助都将不胜感激

import math    
import pandas as pd

columns = ['ClosestLat','ClosestLong']

df5 = pd.DataFrame(columns=columns)

def distance(pt1, pt2):
  return math.sqrt((pt1[0] - pt2[0])**2 + (pt1[1] - pt2[1])**2)

for pt1 in df1:
   closestPoints = [pt1, df2[0]]
   for pt2 in df2:
     if distance(pt1, pt2) < distance(closestPoints[0], closestPoints[1]):
       closestPoints = [pt1, pt2]
       df5['ClosestLat'] = closestPoints[1][0]
   df5['ClosestLat'] = closestPoints[1][0]
   df5['ClosestLong'] = closestPoints[1][1]
   print ("Point: " + str(closestPoints[0]) + " is closest to " + str(closestPoints[1]))
导入数学
作为pd进口熊猫
列=['ClosestLat','ClosestLong']
df5=pd.DataFrame(列=列)
def距离(pt1、pt2):
返回math.sqrt((pt1[0]-pt2[0])**2+(pt1[1]-pt2[1])**2)
对于df1中的pt1:
closestPoints=[pt1,df2[0]]
对于df2中的pt2:
如果距离(pt1,pt2)
从代码的外观来看,您试图用纬度和经度列表填充
df5
。然而,你犯了几个错误

  • 熊猫数据帧的列是系列的,并保存某种类型的顺序数据。因此
    df5['ClosestLat']=closestPoints[1][0]
    尝试为整个列指定一个数值,结果是一个空列
  • 即使dataframe没有忽略您为列分配实数的尝试,您也会丢失数据,因为您正在用每个循环覆盖列
  • 解决方案:构建一个lat和long列表,然后插入数据帧

    import math    
    import pandas as pd
    
    columns = ['ClosestLat','ClosestLong']
    
    df5 = pd.DataFrame(columns=columns)
    
    def distance(pt1, pt2):
      return math.sqrt((pt1[0] - pt2[0])**2 + (pt1[1] - pt2[1])**2)
    
    lats, lngs = [], []
    for pt1 in df1:
       closestPoints = [pt1, df2[0]]
       for pt2 in df2:
         if distance(pt1, pt2) < distance(closestPoints[0], closestPoints[1]):
           closestPoints = [pt1, pt2]
       lats.append(closestPoints[1][0])
       lngs.append(closestPoints[1][1])
    
    df['ClosestLat'] = pd.Series(lats)
    df['ClosestLong'] = pd.Series(lngs)
    
    导入数学
    作为pd进口熊猫
    列=['ClosestLat','ClosestLong']
    df5=pd.DataFrame(列=列)
    def距离(pt1、pt2):
    返回math.sqrt((pt1[0]-pt2[0])**2+(pt1[1]-pt2[1])**2)
    lats,lngs=[],[]
    对于df1中的pt1:
    closestPoints=[pt1,df2[0]]
    对于df2中的pt2:
    如果距离(pt1,pt2)
    请定义df1和df2。