【问题标题】:Python pandas - Function to get columns with their namesPython pandas - 获取列名的函数
【发布时间】:2020-04-11 06:22:25
【问题描述】:

我有一个 Excel 文件:

Test_Case   Value
Case_1      0.988532846
Case_2      0.829241525
Case_3      0.257209267
Case_4      0.871698313
Case_5      0.63913665

使用 pandas,我看到我们可以得到这样的列:

import pandas as pd
myExcelFile = "data.xlsx"
readExcelFile = pd.read_excel(myExcelFile, sheet_name=0, index=0)
testCaseColumn = readExceFile.Test_Case

结果:

0 Case_1
1 Case_2
2 Case_3
3 Case_4
4 Case_5

列的名称可以更改,我想创建一个带有两个参数的函数来获取我想要的列:

def getColumn(readExceFile, columnName):
    return readExceFile.columnName

我想知道如何将列的名称归因于我的 readExcelFile 参数?

感谢您的帮助

【问题讨论】:

  • read_excel中是否需要usecols参数?检查这个:stackoverflow.com/questions/26063231/…
  • 使用['label']而不是.label访问列通常更好。你能澄清你想要做什么吗?此外,变量和函数名称应遵循lower_case_with_underscores 样式。
  • @AMC 我必须审查代码并重写它。在代码中,这些行被多次编写。我想创建一个有清晰代码的函数。

标签: python pandas


【解决方案1】:

您可以使用getattr

def getColumn(readExceFile, columnName):
    return getattr(readExceFile, columnName)

【讨论】:

    【解决方案2】:

    由于 your_dataframe.column_name 仅适用于不带空格字符的列名,并且您提到可以更改列名,因此您可以使用 your_dataframe.loc[:,'column_name'] 调用列名(请参阅 Alexander Céciles 评论)。

    另一方面,如果您的数据集始终具有相同的结构(n 列,第一个包含一些分类数据,第二个包含值等),那么您也可以直接使用 your_dataframe.iloc[:,0] 调用它,使用 0成为您在集合中的第一个感兴趣的列。

    最后,如果你真的需要一个单独的函数(至少除了我提到的那两个),它返回完全相同的输出,那么你可以使用这个:

    def get_column(your_dataframe, column_name):
        return your_dataframe.loc[:,column_name]
    

    ...什么是高度非pythonic的代码编写方式(参见Zen of Python

    【讨论】:

    • 列名带空格可能是个问题,your_dataframe.iloc[:,0] 可以解决这个问题。感谢您的帮助。
    猜你喜欢
    • 2018-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-03
    • 2017-10-23
    • 2016-11-12
    相关资源
    最近更新 更多