熊猫:如何引用结构列:('Name',n)('Name',n + 1)

时间:2018-12-10 16:35:44

标签: python python-3.x pandas

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

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

1 个答案:

答案 0 :(得分:0)

事实证明,列名是元组,其中包含一个字符串和一个来自透视的整数。起作用的是通过遵循以下最后一个答案的稍微修改的版本来替换列名称: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)