循环熊猫列名称以创建新的数据框

时间:2018-06-24 20:02:58

标签: python pandas dataframe indexing

我正在寻找循环数据框中的列的方法,当列名称符合条件时,创建一个新的数据框和/或将其添加到现有的数据框中。例如,我当前的数据框具有以下列名称:

打开 高 低 IVV 体积 打开 高 低 EWH 体积 打开 高 低 印地 体积 打开 高 低 工作小组 体积 打开 高 低 恩兹 音量

我想要一个可以找到IVV,EWH,INDY,EWG和ENZL并将其添加到自己的数据框中的循环。

我尝试了以下方法:

Indexlist = ['IVV', 'EWH', 'INDY', 'EWG', 'ENZL']

尝试删除值列:

for column in data:
    print(column)
    if column != Indexlist:
        data.drop([column], axis=0))

尝试删除列

for column in data:
    print(column)
    if column != Indexlist:
        del data[column]

尝试选择列

data_sample = data[column].isin(Indexlist)

所有这些方法都抛出错误。

2 个答案:

答案 0 :(得分:0)

我认为需要用正则表达式检查str.contains的列名的子字符串-将|的{​​{1}}的list的所有值连接起来:

OR

如果需要按列名称选择,请使用子集:

data1 = data.loc[:, data.columns.str.contains('|'.join(Indexlist))]

答案 1 :(得分:0)

您可以将pd.Index.isinpd.DataFrame.loc一起使用以建立布尔索引:

data_sample = data.loc[:, data.columns.isin(Indexlist)]

或者直接索引,如果您事先知道所有列表元素都以列的形式存在于数据框中:

data_sample = data[Indexlist]