Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.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_Pandas_Loops_Dataframe_Rows - Fatal编程技术网

Python 打印行的次数与其在其他行中出现的值加一的次数相同

Python 打印行的次数与其在其他行中出现的值加一的次数相同,python,pandas,loops,dataframe,rows,Python,Pandas,Loops,Dataframe,Rows,我想根据imageno+1出现的次数,在一个新的df(df2)中打印每一行。所以在下面的数据中,第1行应该打印两次(有两个7),第2行两次,第3行两次,第4行一次(有一个8),第5行一次,等等 import pandas as pd print(df) x-position y-position imageno 1 220 220 6 2 627 220 6 3 620 220

我想根据imageno+1出现的次数,在一个新的df(df2)中打印每一行。所以在下面的数据中,第1行应该打印两次(有两个7),第2行两次,第3行两次,第4行一次(有一个8),第5行一次,等等

import pandas as pd

print(df)
   x-position  y-position  imageno
1  220         220          6
2  627         220          6
3  620         220          6
4  220         220          7
5  628         220          7
6  621         220          8

df2 = pd.DataFrame(columns=['x-position', 'y-position', 'imageno'])

IIUC
merge
调整
'imageno'

df.assign(imageno=df.imageno+1).merge(df[['imageno']],on='imageno').assign(imageno=lambda x : x['imageno']-1)
Out[894]: 
   x-position  y-position  imageno
0         220         220        6
1         220         220        6
2         627         220        6
3         627         220        6
4         620         220        6
5         620         220        6
6         220         220        7
7         628         220        7

IIUC,使用创建一个助手系列,然后使用和,以获得所需的数量或重复次数:

df = pd.DataFrame({'x-position': {1: 220, 2: 627, 3: 620, 4: 220, 5: 628, 6: 621}, 'y-position': {1: 220, 2: 220, 3: 220, 4: 220, 5: 220, 6: 220}, 'imageno': {1: 6, 2: 6, 3: 6, 4: 7, 5: 7, 6: 8}})

s = df['imageno'].value_counts()

df2 = df.loc[df.index.repeat(df['imageno'].add(1).map(s).fillna(0).astype(int))]
[外]


谢谢我在解析时遇到一个错误
语法错误:意外的EOF
。你知道我如何解决这个问题吗?@sforbes hmmmm,如果你复制并粘贴上面的代码,包括样本数据,你会得到EOF吗。。?可能是您丢失了右括号或右引号?错误消息是否提示了SyntaxError在代码中的位置?哪一行、哪一列等?感谢您提供的示例数据。使用您发送的代码,我收到错误
TypeError:无法根据规则“safe”将数组数据从dtype('float64')强制转换为dtype('int64')
我无法重现该错误,可能是版本控制问题。。?我更新了代码,添加了
astype(int)
方法。你能再试一次吗?谢谢。这是可行的(没有错误消息),但我认为imagenos比应该的高一个?这是可行的,谢谢。可以解释一下代码吗?@sforbes加一,所以当合并(6+1)将与7合并时,合并后我们只需减去一,就可以回到原来的状态
   x-position  y-position  imageno
1         220         220        6
1         220         220        6
2         627         220        6
2         627         220        6
3         620         220        6
3         620         220        6
4         220         220        7
5         628         220        7