根据列名创建DataFrame的子集

时间:2014-01-03 11:53:47

标签: python string pandas dataframe columnname

我有一个名为timedata的pandas DataFrame,它有不同的列名,其中一些包含单词Vibration,有些偏心。是否可以创建仅包含单词Vibration?

的列的数据框

我尝试过使用

vib=[]
for i in timedata:
    if 'Vibration' in i:
        vib=vib.append(i)

然后根据这些列的指示创建一个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)})

抱歉,我的日子很慢!谢谢你的帮助

2 个答案:

答案 0 :(得分:13)

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

df[[col for col in df.columns if "Vibration" in col]]

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

df.filter(like="Vibration")

如果您想要更灵活的过滤器,可以使用regex选项。例如。查看“振动”或“Ecc”是否在列名称中:

df.filter(regex='Ecc|Vibration')

答案 1 :(得分:1)

 newDf    = Df.loc[:,['Vibration']]

newDf    = Df.loc[:,['Vibration','eccentricity']]

获取更多列以搜索列中的值:

newDf    =  Df[Df["CollumnName"] == "vibration"]