无法匹配和设置来自多个数据帧的值

时间:2014-12-30 06:53:57

标签: python csv pandas gtfs

我正在尝试将stop_id中的stop_times.csvstop_id中的stops.csv进行匹配,以便复制stop_latstop_lonstop_times.csv中的各自列。

Gist文件:

stops.csv LINK

stop_times.csv LINK

这是我的代码:

import pandas as pd

st = pd.read_csv('csv/stop_times.csv', sep=',')
st.set_index(['trip_id','stop_sequence'])
stops = pd.read_csv('csv/stops.csv')

for i in range(len(st)):
    for x in range(len(stops)):
        if st['stop_id'][i] == stops['stop_id'][x]:
            st['stop_lat'][i] = stops['stop_lat'][x]
            st['stop_lon'][i] = stops['stop_lon'][x]

st.to_csv('csv/stop_times.csv', index=False)

我知道脚本正在应用副本,但我不知道还有什么其他方法可以做到这一点,因为我对熊猫来说相当新。

1 个答案:

答案 0 :(得分:1)

您可以merge两个DataFrame:

pd.merge(stops, st, on='stop_id')

由于每个列都有stop_lat列,因此它会为您提供stop_lat_x(好的)和stop_lat_y(始终为零)。然后,您可以删除或忽略坏列,并根据需要输出生成的DataFrame。