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

标签 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          6
4  220         220          7
5  628         220          7
6  621         220          8

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

最佳答案

IIUC,使用Series.value_counts创建一个助手系列,然后使用 Series.map , index.repeatDataFrame.loc获得所需的次数或重复次数:

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))]

[输出]

   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

关于python - 打印行的次数与其值加一在其他行中出现的次数相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55748976/

相关文章:

python - Tensorflow:恢复模型后如何更改优化器?

python - 如何在 Python 中进行多次导入?

设置中单元测试函数的 Python 打印名称

python - Pandas assert_frame_equal 行为

c++ - 如何打印整个 vector ?

android - 从资源角度来看,使用 context.getString() 中的字符串无限循环刷新 TextView(每 n 秒)是否可以?

python - Matplotlib 和 django 模板

python - 如何使用 pandas 读取 .txt 数据列并将其提供给 TF

基于连续相同行的熊​​猫聚合

php - Seeder 第一次运行良好,但在 Laravel 5 的后续循环中不执行某些任务?