python - 使用 dataframe.loc 将信息从一个数据帧调用到另一个数据帧的更有效方法

标签 python

我想知道您是否可以提出一种更有效的方法?

我有两个数据框如下: 1) 一个包含各种“站”位置的数据框:

   StationNames   Lat          Long
0   St1         1.30405        103.77350
1   H2          1.30414        103.77355
2   H11         1.30446        103.77375

2) 带有我在不同站点时的时间戳的数据框:

               Description        Session       Survey
Local           
2018-10-06 09:48:30   St1       Oct06_Morning   Survey
2018-10-06 09:56:30   St1       Oct06_Morning   Survey
2018-10-06 09:58:30   H2        Oct06_Morning   NoSurvey

现在我想在第二个中添加一列,它根据站名(描述)获取地址(纬度、经度)。 我做了一个循环,但听起来效率很低。有什么建议么? 谢谢, 尼金

TimeStamps['Lat']=0.00
TimeStamps['Lng']=0.00
for i in range(TimeStamps.shape[0]):
    ALong=StationAddress.loc[StationAddress.StationNames==TimeStamps.Description[i],'Long']
    Blat=StationAddress.loc[StationAddress.StationNames==TimeStamps.Description[i],'Lat']
    #print i, ALong, Blat
    TimeStamps['Lng'][i]=ALong
    TimeStamps['Lat'][i]=Blat

最佳答案

您可以使用 merge()功能。

所以如果你的框架是:

StationAddress = pd.DataFrame(data=[['St1',1.30405, 103.77350], ['H2',1.30414, 103.77355],['H11',1.30446, 103.77355]], 
               columns=['StationNames', 'Lat','Long'])

TimeStamps = pd.DataFrame(data=[['2018-10-0609:48:30','St1','Oct06_Morning', 'Survey'], ['2018-10-06 09:56:30','St1','Oct06_Morning', 'Survey'],['2018-10-06 09:58:30','H2','Oct06_Morning', 'NoSurvey']], 
               columns=['local','Description', 'Session','Survey'])

试试这个:

TimeStamps.merge(StationAddress, 
                               left_on='Description', right_on='StationNames',  
                                how='left', left_index=True).set_index('local')

关于python - 使用 dataframe.loc 将信息从一个数据帧调用到另一个数据帧的更有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55485724/

相关文章:

python - Pandas DataFrame 将字典值分配列应用或映射到 MultiIndex 值的函数

python - spaCy,准备训练数据 : doc. char_span 返回 'None'

python - 将多个列表写入 csv Python

python - 什么时候应该将 `autospec=True` 与模拟库一起使用?

python - 如何在python 3中将字节作为流读取

python - 如何在 python django 中向 Tastypie 返回 json 添加额外的对象

python - 根据编辑距离将数据帧列中的字符串与列表中的单词进行比较

python - 在3.8.2上安装kivy python

python - 无法在 pyspark 中应用 pandas_udf

python - 比较在 scikit-learn 中调整超参数的方法