Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于另一个变量/列的两行在数据帧中生成新变量/列_Python_Python 3.x_Pandas - Fatal编程技术网

Python 基于另一个变量/列的两行在数据帧中生成新变量/列

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

背景:我正在处理统一的犯罪报告数据,由cityplace编制索引。我试图在2006-2016年合并/合并

问题:并非所有的.csv文件都在城市名称前有一个state列,并且每个文件中有不同数量的城市。由于“城市名称”列中存在重复项,因此我无法在没有第二个键的情况下进行合并

我的解决方案是:我创建了一个新变量=每个城市名称的第一个字母,以及一个字典a:1,B:2,…Z:26。然后,我创建了另一列,其中的值与每个第一个字母相关。目标是从第n+1行减去第n行,计算结果=>0,或者计算不等式rown+1=>rown

我花了一天的大部分时间试图在一个列表中完成它,例如:

    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],你不必担心越界。