保留子字符串在列表中的熊猫数据框的列

时间:2021-04-29 13:53:21

标签: python-3.x pandas

我有一个包含许多列的数据框。我只想保留那些子字符串在列表中的列。例如 lst 和 dataframe 是:


lst = ['col93','col71']

sample_id.    col9381.3     col8371.8      col71937.9      col19993.1
   1
   2
   3
   4

基于子字符串,结果数据框将如下所示:


sample_id.    col9381.3   col71937.9  
   1
   2
   3
   4

我有一个代码,它遍历列表并过滤掉我在列表中有子字符串的列,但我不知道如何为其创建数据框。到目前为止的代码:

for i in lst:
    df2 = df1.filter(regex=i)
    if df2.shape[1] > 0:
        print(df2)

上面的代码能够过滤掉列,但我不知道如何将所有这些组合成一个数据帧。将不胜感激。

1 个答案:

答案 0 :(得分:3)

尝试使用接受一组选项的 startswith

df.loc[:, df.columns.str.startswith(('sample_id.',)+tuple(lst))]

或者 filter 在您尝试时接受正则表达式:

df.filter(regex='|'.join(['sample_id']+lst))

输出:

   sample_id.  col9381.3  col71937.9
0           1        NaN         NaN
1           2        NaN         NaN
2           3        NaN         NaN
3           4        NaN         NaN