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