【问题标题】:Add calculated column to the dataframe将计算列添加到数据框中
【发布时间】:2017-02-22 22:07:24
【问题描述】:

各位,我刚开始使用 python,但在使用 pandas 数据框时遇到了问题。

我有上述格式的数据框。我有计算位置之间距离的功能。

def Dist(lat1, lon1, lat2, lon2): 
dlat = lat2 - lat1   
dlon = lon2 - lon1
return dlat + dlon

我想在数据帧上为从 lat1/lon1 到 lat/lon 和 lat2/lon2 到 lat/lon 的每个距离创建一个新列。我尝试使用以下代码但收到错误。

df['dist1'] = Dist(df['lat'], df['lon'], df['lat1'], df['lon1'] )
df['dist2'] = Dist(df['lat'], df['lon'], df['lat2'], df['lon2'] )

TypeError: cannot convert the series to <class 'float'>

我在这里缺少什么?为每一行调用函数并将其添加为新列中每个单元格的值的方法是什么?

我将不胜感激。

【问题讨论】:

  • 我将提供的第一个帮助是建议您阅读Minimal, Complete, and Verifiable example。它可以帮助您以回答问题的人愿意积极回应的方式提出问题。
  • @piRSquared 同意。在这种情况下,重要的是你实际使用你的功能,而不是return something
  • @piRSquared 感谢您的建议。该功能在这里并不重要,您只需返回 0 即可,您仍然会遇到问题。但是,我现在没有返回“某物”,而是返回了一些真正的价值。我的问题是当我调用该方法时,整个系列都被传递给该函数。如果我的问题不完整或无法理解,我很抱歉。
  • @Bikswan 实际上,函数和数据框至关重要的。使用具有相同列名和相同函数的数据框的随机数据会返回您所期望的结果而不会出现错误。您是否偶然在Dist 函数中使用了float() 函数?
  • 你也可以阅读/试试这个:stackoverflow.com/questions/29832455/…

标签: python pandas dataframe


【解决方案1】:

我找到了方法。不过可能效率不高。

for index, row in df.iterrows():
    df.loc[index, 'dist_1'] =  Dist(row['lat'], row['lon'], row['lat1'], row['lon1'])
    df.loc[index, 'dist_2'] =  Dist(row['lat'], row['lon'], row['lat2'], row['lon2'])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多