背景:我正在使用统一犯罪报告数据,按城市(地点)编制索引。我正在尝试合并/连接2006-2016年
问题:并非所有.csv都在城市名称前面有一个州列,每个文件中都有不同数量的城市。由于城市名称列中存在重复项,因此无法使用第二个键进行合并(对我而言)。
我的解决方案:我创建了一个新变量=每个城市名称的第一个字母和一个字典“A”:1,“B”:2,...“Z”:26。然后我创建了另一个列,其中包含与每个首字母相关联的值。目标是从行(n + 1)中减去行n并评估result => 0,或评估不等式行(n + 1)=> row(n)
我花了大部分时间尝试在列表中执行此操作,例如:
state = []
statenum = 1
for n in firstletter:
if n+1 => n:
state.append(statenum)
else:
statenum = statenum + 1
state.append(statenum)
但是,对于我的生活,我无法弄清楚如何在列表中调用n + 1对象,而不是简单地将n加1到n值。
我刚刚尝试在数据框中尝试这样做,但我无法让它工作。我很乐意为两者提供解决方案;它并不需要特别有效。
答案 0 :(得分:1)
但是,对于我的生活,我无法弄清楚如何在列表中调用n + 1对象,而不是简单地将n加1到n值。
如果你想要下一个迭代对象,你可以这样做:
for index, n in enumerate(firstletter):
n # it is your current object
firstletter[index + 1] # it is your next object
但要小心,因为当你点击最后一个对象时你不想搜索下一个迭代,因为你会引发 IndexError 。
答案 1 :(得分:0)
谢谢你,IMCoins& COLDSPEED。我得到了它的工作:
testn = []
state = 1
for index, n in enumerate(ln[:-1]):
c1 = n
c2 = ln[index + 1]
if c2 >= c1:
testn.append(state)
else:
state = state + 1
testn.append(state)
我确信它是效率最低的方式,但它适用于我=)