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 中解压列表的主要内容,如果未能解决你的问题,请参考以下文章