快速访问DataFrame中的行的子集

时间:2019-03-07 16:46:57

标签: python pandas performance dataframe optimization

我需要访问与列值的几种组合相关联的DataFrame中的行数。

这是我正在做的要点:

for col1, col2, col3 in column_values:
    n = df.loc[(df.col1 == col1) & (df.col2 == col2) & (df.col3 == col3)].shape[0]
    print n

column_values是一长串列表时,我发现这非常慢。无论我使用df.loc[]df[]还是df.ix[],速度都是相同的。

是否有更快的方法来访问行计数?

1 个答案:

答案 0 :(得分:0)

假设column_values是一个元组列表,我建议只计数一次:

grouped = df.groupby([col1, col2, col3]).count()
grouped.reindex(columns_values, fill_value=0)