根据列名创建DataFrame的子集

use*_*786 7 python string columnname dataframe pandas

我有一个timedata用不同的列名称调用的pandas DataFrame ,其中一些包含单词Vibration,有些偏心.是否可以创建仅包含单词Vibration的列的数据框?

我试过用

vib=[]
for i in timedata:
    if 'Vibration' in i:
        vib=vib.append(i)
Run Code Online (Sandbox Code Playgroud)

然后根据这些列的指示创建一个DataFrame.这似乎不是最有效的方法,我确信必须有一些简单的列表理解.

编辑

表格数据框:

df = DataFrame({'Ch 1:Load': randn(10), 'Ch 2:Vibration Brg 1T ': randn(10), 'Ch 3:Eccentricity Brg 1H ': randn(10), 'Ch 4:Vibration Brg 2T ': randn(10)})
Run Code Online (Sandbox Code Playgroud)

对不起,我的日子很慢!谢谢你的帮助

jor*_*ris 17

这样的东西可以手动选择其中包含"Vibration"一词的所有列:

df[[col for col in df.columns if "Vibration" in col]]
Run Code Online (Sandbox Code Playgroud)

您也可以使用以下filter方法执行相同的操作:

df.filter(like="Vibration")
Run Code Online (Sandbox Code Playgroud)

如果您想要更灵活的过滤器,可以使用该regex选项.例如,查看列名中是否有"Vibration"或"Ecc":

df.filter(regex='Ecc|Vibration')
Run Code Online (Sandbox Code Playgroud)

  • 添加了正则表达式选项? (2认同)