尝试迭代df并添加一列,每列都有一个值

时间:2015-10-28 20:34:19

标签: python pandas dataframe

我正在尝试使用两个数据框向我的一个数据框添加新列num_events

我的第一次尝试是使用iteritems(),但我收到错误:KeyError: 'min_lat'

基本代码:

for index, row in v_roads.iteritems():
  min_lat = row['min_lat']
  min_lon = row['min_lon']
  max_lat = row['max_lat']
  max_lon = row['max_lon']
  total_events = 0
  for i, r in accidents.iteritems():
        e_lat = r['latitude']
        e_lon = r['longitude']
        if e_lat >= min_lat and e_lat <= max_lat and e_lon >= min_lon and e_lon <= max_lon:
           total_events += 1
 row['num_events'] = total_events

我理解iteritems()懒惰地迭代(索引,值)元组,但我不确定另一种方法可以做我想要的,这是针对每一行,获取行的列中的数据,{{ 1}},min_lat等,并将数据存储在变量中。

有人可以指出我正确的方向指向正确的方法吗?

编辑:为了清除这一点,是的,我确实想添加一个新列,但我坚持从特定行的列中读取数据。

数据示例

v_roads enter image description here

事故

enter image description here

1 个答案:

答案 0 :(得分:0)

所以要解决这个问题,这就是我所做的:

    for row in v_roads.itertuples():
       # Where 11 is the index of the min_lat col...
       min_lat = row[11]
       min_lon = row[12]
       ...

它并不那么难,所以希望这可以帮助其他人解决类似问题。

请注意,元组是不可变的,因此如果您想进行更改,则需要执行以下操作:

    for i, row in v_roads.head(1000).iterrows():
       v_roads.set_value(i, 'colNameHere', variableToPlace)