Groupby与行索引操作?

时间:2016-07-08 11:09:04

标签: python pandas scipy

如何在pandas中选择具有给定行索引操作的行(例如,仅偶数行或仅当行#%5 == 0时)? 让我说我有一个df [120 rows x 10 column]的数据框,我想创建两个,一个来自偶数行df1 [60 rows x 10 column],另一个来自奇数行[60 rows x 10 column]

2 个答案:

答案 0 :(得分:4)

您可以使用普通列表样式切片语义对dfs进行切片:

first = df.iloc[::2]
second = df.iloc[1::2]

所以从第一行到最后一行的每2行的第一步 第二行是相同的,但从第1行开始,第2行开始,每2行开始步骤

答案 1 :(得分:1)

如前所述,您可以使用iloc

df0 = df.iloc[::2]
df1 = df.iloc[1::2]

如果你有一个更复杂的选择模式,你可以将一个布尔矢量传递给iloc,例如,

def filter_by( idx ):
    # param idx: an index
    # returns True if idx%4==0 or idx%4==1
    if idx%4==0 or idx%4==1:
        return True
    else:
        return False    

# a boolean vector is created by means of filter_by
df_new = df.iloc[ [ filter_by(i) for i in range(df.shape[0]) ] ]

上面的过滤是:

df0 = df.iloc[ [ idx%2==0 for idx in range(df.shape[0]) ] ]
df1 = df.iloc[ [ idx%2==1 for idx in range(df.shape[0]) ] ]