Python 基于另一个变量/列的两行在数据帧中生成新变量/列
背景:我正在处理统一的犯罪报告数据,由cityplace编制索引。我试图在2006-2016年合并/合并 问题:并非所有的.csv文件都在城市名称前有一个state列,并且每个文件中有不同数量的城市。由于“城市名称”列中存在重复项,因此我无法在没有第二个键的情况下进行合并 我的解决方案是:我创建了一个新变量=每个城市名称的第一个字母,以及一个字典a:1,B:2,…Z:26。然后,我创建了另一列,其中的值与每个第一个字母相关。目标是从第n+1行减去第n行,计算结果=>0,或者计算不等式rown+1=>rown 我花了一天的大部分时间试图在一个列表中完成它,例如:Python 基于另一个变量/列的两行在数据帧中生成新变量/列,python,python-3.x,pandas,Python,Python 3.x,Pandas,背景:我正在处理统一的犯罪报告数据,由cityplace编制索引。我试图在2006-2016年合并/合并 问题:并非所有的.csv文件都在城市名称前有一个state列,并且每个文件中有不同数量的城市。由于“城市名称”列中存在重复项,因此我无法在没有第二个键的情况下进行合并 我的解决方案是:我创建了一个新变量=每个城市名称的第一个字母,以及一个字典a:1,B:2,…Z:26。然后,我创建了另一列,其中的值与每个第一个字母相关。目标是从第n+1行减去第n行,计算结果=>0,或者计算不等式rown+1
state = []
statenum = 1
for n in firstletter:
if n+1 => n:
state.append(statenum)
else:
statenum = statenum + 1
state.append(statenum)
但是,就我的一生而言,我无法理解如何调用列表中的n+1对象,而不是简单地将1添加到n的值中
我突然想到要尝试在数据帧中实现它,但我也无法让它工作。我很乐意为这两个问题找到解决方案;它实际上并不需要特别有效
但是,就我的一生而言,我无法理解如何调用列表中的n+1对象,而不是简单地将1添加到n的值中
如果需要下一个迭代对象,可以这样做:
for index, n in enumerate(firstletter):
n # it is your current object
firstletter[index + 1] # it is your next object
不过要小心,因为当你点击最后一个对象时,你不想搜索下一个迭代,因为你会引发一个索引器。谢谢你,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)
我确信这是最没有效率的方法,但它对我有效=你介意分享你的数据帧和预期输出吗?枚举第一个字母[:-1],你不必担心越界。