我正在寻找循环数据框中的列的方法,当列名称符合条件时,创建一个新的数据框和/或将其添加到现有的数据框中。例如,我当前的数据框具有以下列名称:
打开 高 低 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)
所有这些方法都抛出错误。
答案 0 :(得分:0)
我认为需要用正则表达式检查str.contains
的列名的子字符串-将|
的{{1}}的list的所有值连接起来:
OR
如果需要按列名称选择,请使用子集:
data1 = data.loc[:, data.columns.str.contains('|'.join(Indexlist))]
答案 1 :(得分:0)
您可以将pd.Index.isin
与pd.DataFrame.loc
一起使用以建立布尔索引:
data_sample = data.loc[:, data.columns.isin(Indexlist)]
或者直接索引,如果您事先知道所有列表元素都以列的形式存在于数据框中:
data_sample = data[Indexlist]