我有一个名为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)})

抱歉,我今天过得很慢!谢谢你的帮助

最佳答案

这样的操作可以手动选择其中包含“振动”一词的所有列:

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

您还可以使用filter方法执行相同的操作:
df.filter(like="Vibration")

如果您想做一个更灵活的过滤器,可以使用regex选项。例如。查看“振动”或“Ecc”是否在列名称中:
df.filter(regex='Ecc|Vibration')

关于python - 根据列名称创建DataFrame的子集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20903071/

10-11 20:47