假设您有一个包含大量列的 DataFrame df,例如 50,并且 df 没有任何索引(即 index_col=None)。您希望选择由 required_columns_list 定义的列的子集,但希望仅返回满足各种布尔索引定义的多个条件的那些行。有没有办法使用 dict 生成器简洁地生成选择语句?
举个例子:
df = pd.DataFrame(np.random.randn(100,50),index=None,columns=["Col" + ("%03d" % (i + 1)) for i in range(50)])
# df.columns = Index[u'Col001', u'Col002', ..., u'Col050']
required_columns_list = ['Col002', 'Col012', 'Col025', 'Col032', 'Col033']
现在让我们想象一下我定义:
boolean_index_dict = {'Col001':"MyAccount", 'Col002':"Summary", 'Col005':"Total"}
我想选择使用 dict 生成器来构造多个布尔索引:
df.loc[GENERATOR_USING_boolean_index_dict, required_columns_list].values
上面的生成器布尔方法相当于:
df.loc[(df['Col001']=="MyAccount") & (df['Col002']=="Summary") & (df['Col005']=="Total"), ['Col002', 'Col012', 'Col025', 'Col032', 'Col033']].values
希望您可以看到这在操作大型 DataFrame 时非常有用的“模板”,然后可以在 boolean_index_dict 中定义布尔索引。如果您能告诉我这在 Pandas 中是否可行以及如何构造 GENERATOR_USING_boolean_index_dict,我将不胜感激。非常感谢和亲切的问候,伯蒂
ps 如果您想对此进行测试,您将需要使用文本填充一些 df 列。如果需要测试,则使用随机数定义 df 只是作为入门...