Python- 在 Pandas Slicer 中解压列表

Posted

技术标签:

【中文标题】Python- 在 Pandas Slicer 中解压列表【英文标题】:Python- Unpack A List in Pandas Slicer 【发布时间】:2019-08-26 13:41:07 【问题描述】:

我写了一个类似下面的函数。该函数需要一个多级数据框。 column_name 参数可以是 ['Deal Name','Deal Expense']。要过滤多级数据框,我需要在数据框过滤器中解压缩 column_name 列表。

我希望像df[*column_name].loc[row_name] 这样的东西会起作用,但它没有。

更多信息: 我正在尝试访问多级数据框。 column_name[0] 是我想要在级别 0 上的列的名称,column_name[1] 是我想要在级别 1 上的列的名称,依此类推。

def search_table(row_name, column_name):
    if header == 1:
        output = df.at[row_name, column_name]
    elif header == 2:
        output = df[column_name[0], column_name[1]].loc[row_name]
    elif header == 3:
        output = df[column_name[0], column_name[1], column_name[2]].loc[row_name]
    elif header == 4:
        output = df[column_name[0], column_name[1], column_name[2], column_name[3]].loc[row_name]
    return output

这个函数可以完成这项工作,但写起来真的很傻。如何解压数据框切片器中的列表?

【问题讨论】:

【参考方案1】:

我不确定我是否理解您的标头参数的作用,pandas 数据帧可以按列名数组进行切片。因此,您可以直接通过列数组访问,而无需使用 python 列表解包运算符 (*),如下所示:

def search_table(row_name, column_name):
    if header == 1:
        return df.at[row_name, column_name]
    elif header >= 2:
        return df[column_name].loc[row_name]

【讨论】:

我正在尝试访问多级数据框。我应该清楚 column_name[0] 是我想要在级别 0 上的列的名称,column_name [1] 是我想要在级别 2 上的列的名称

以上是关于Python- 在 Pandas Slicer 中解压列表的主要内容,如果未能解决你的问题,请参考以下文章

3D Slicer Modify Mouse Event 修改3D Slicer中的鼠标响应事件

我的Slicer项目开发经验积累1

我的Slicer项目开发经验积累1

我的Slicer项目开发经验积累1

如何在VS Code开发Slicer插件的过程中进行调试?

如何在VS Code开发Slicer插件的过程中进行调试?