8

我有一个使用不同列名调用的 pandas DataFrame timedata,其中一些包含 Vibration 这个词,一些 eccentricity。是否可以创建仅包含“振动”一词的列的数据框?

我试过使用

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)})

对不起,我今天过得很慢!谢谢你的帮助

4

2 回答 2

24

像这样手动选择所有带有“振动”字样的列:

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

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

df.filter(like="Vibration")

如果你想做一个更灵活的过滤器,你可以使用该regex选项。例如,查看“Vibration”或“Ecc”是否在列名中:

df.filter(regex='Ecc|Vibration')
于 2014-01-03T12:21:13.797 回答
2
 newDf    = Df.loc[:,['Vibration']]

或者

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

获得更多列

在列中搜索值:

newDf    =  Df[Df["CollumnName"] == "vibration"]    
于 2014-01-03T11:58:03.520 回答