【问题标题】:Pandas: How to reference columns of structure: ('Name', n) ('Name', n+1)Pandas:如何引用结构列:('Name', n) ('Name', n+1)
【发布时间】:2018-12-14 03:27:31
【问题描述】:

我的代码使用正则表达式查找某个列字符串的最大行数,然后删除这些行数。

df["MaxConfAll"] = df.filter(regex=("MaxConfDays.*")).max(axis=1)
drop_cols = list(df3.filter(regex=("MaxConfDays.*")))
df3 = df3.drop(drop_cols, axis=1)

成功找到并删除如下列: ('MaxConfDays', 1) ('MaxConfDays', 2) ('MaxConfDays', 3)...('MaxConfDays', n)

但是,如果我尝试引用一个特定的,那么它会给我一个 KeyError:

df["('MaxConfDays', 3)"] 返回一个KeyError

KeyError: "('MaxConfDays', 3)"

数据框是: ('MaxConfDays', 1) ('MaxConfDays', 2) ('MaxConfDays', 3) 2 0 NaN 0 NaN NaN 3 NaN NaN 0 NaN NaN 33 33 0

【问题讨论】:

  • 向我们展示数据框。
  • df["('MaxConfDays.Name', 3)"] ?????什么是名称?,它是否意味着是一个变量?如果是这样,请删除 '
  • 这只是一个例子。将其替换为实际名称。添加了数据框。
  • 你试过没有多余的引号吗? df['MaxConfDays', 3]?或df.loc[3, 'MaxConfDays']?
  • 你能创建一个包含输入代码和预期输出的完整示例吗?

标签: python python-3.x pandas


【解决方案1】:

事实证明,列名是元组,其中包含一个字符串和一个由主元生成的整数。有效的方法是通过以下最后一个答案的略微修改版本来替换列名:How to change the columns name from a tuple to string?

这来自 (str, int) -> 'string' 的元组

mydic = dict() 
for i,var in enumerate(df.columns):
    if isinstance(var, tuple): 
        mydic[var] = '{}_{}'.format(var[0], str(var[1]))
df.rename(columns = mydic, inplace=True)

list(df)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-25
    • 1970-01-01
    • 2013-04-11
    • 2020-11-08
    • 2021-11-03
    • 1970-01-01
    相关资源
    最近更新 更多