在Python中用相同的数字计算每两行

问题描述

我有一个每两行相关的数据框。我试图给每两行一个唯一的 ID。我认为这会容易得多,但我无法弄清楚。假设我有这个数据框:

df = pd.DataFrame({'Var1': ['A',2,'C',7],'Var2': ['B',5,'D',9]})
print(df)

Var1 Var2
   A    B
   2    5
   C    D
   7    9

我想添加一个 ID 来生成如下所示的数据框:

df = pd.DataFrame({'ID' : [1,1,2],'Var1': ['A',9]})
print(df)

ID Var1 Var2
1    A    B
1    2    5
2    C    D
2    7    9

这只是一个示例,但每两行都是相关的,因此只需尝试在 ID 列中按 1、1、2、2、3、3 等计数。

感谢您的帮助!

解决方法

您可以先创建一个序列,然后将其除以 2(整数除法):

import numpy as np
df['ID'] = np.arange(len(df)) // 2 + 1
df

#  Var1 Var2  ID
#0    A    B   1
#1    2    5   1
#2    C    D   2
#3    7    9   2
,

我认为这不是 Pandas 的原生方式,但这是可行的...

import pandas as pd

df = pd.DataFrame({'Var1': ['A',2,'C',7],'Var2': ['B',5,'D',9]})
df['ID'] = 1 + df.index // 2
df[['ID','Var1','Var2']]

输出:

   ID Var1 Var2
0   1    A    B
1   1    2    5
2   2    C    D
3   2    7    9