熊猫包处理丑陋的列名

时间:2018-10-29 15:55:31

标签: python pandas

我正在尝试使用python中的pandas访问具有丑陋的列名(例如空格,parens等)的电子表格中的某些列。我有以下代码片段:

colnames= ['Name', 'Powered On', 'Connection State', 'Idle','Memory (GB)', 'Mem Recomm','Disk Recomm', 'Disk (GB)', 'ThinProvDisk', 'Max Read IO', 'Mac Write IO', 'IOPS Avg', 'Max VDisk Read (MBps)', 'Max VDisk Write (MBps)', 'CPU Avg (MHz)', 'vCPUs', 'vCPU Recommended', 'CPU|Usage', 'vCenter', 'Guest OS', 'Guest IP', 'VMTools status', 'Networks', 'Cluster', 'Datacenter', 'Current Host', 'Folder', 'Memory Hot Add', 'vCPU Hot Add', 'VM Version', 'vSphere Tag', 'Template', 'Datastore(s)', 'Datastores']

data = pd.read_excel(str(sys.argv[1]), names = colnames)
names = data.['Powered On'].tolist()
for x in (names):
  print(x)

我试图提取Powered On列的列表,但是最终将需要以各种组合提取其他列。我不断收到语法错误:

names = data.['Powered On'].tolist()

表示方括号和引号在语法上无效。任何帮助将不胜感激。仅供参考,我无法修改入站电子表格,因为它是由另一个团队生成的,他们拒绝清理它。谢谢!!!!!卡盘

2 个答案:

答案 0 :(得分:1)

有几种方法可以从数据框中提取特定的列。要提取单个列,可以执行以下任一操作:

data['Powered On']

或者所需的列名中没有空格或标点符号:

data.Name

请注意,这不是建议的语法,因为它可能与保留名称(例如data.indexdata.columns等)发生冲突。

要提取多个列,请传递一个列表:

data[['Name','Powered On','Connection State']]

有关索引和选择数据的更多文档,here

答案 1 :(得分:1)

您的语法不正确。您应使用data['Powered On'],且不要使用句点。您可以使用句点来表示较简单的列名,但不要使用方括号和''。 data['Idle']data.Idle