我有一个数据帧,有一个大的多重索引,来源于大量的csv文件。其中一些文件在不同的标签中有错误,例如“window”被拼错为“winZZw”,当我用df.xs('window', level='middle', axis=1)
选择所有窗口时,就会出现问题。在
所以我需要一种简单地将winZZw
替换为window
。在
这是一个非常小的df示例:(假设数据和'roof', 'window'…
字符串来自一些复杂的文本阅读器)
header = pd.MultiIndex.from_product(['roof', 'window', 'basement'], names = ['top', 'middle', 'bottom'])
dates = pd.date_range('01/01/2000','01/12/2010', freq='MS')
data = np.random.randn(len(dates))
df = pd.DataFrame(data, index=dates, columns=header)
header2 = pd.MultiIndex.from_product(['roof', 'winZZw', 'basement'], names = ['top', 'middle', 'bottom'])
data = 3*(np.random.randn(len(dates)))
df2 = pd.DataFrame(data, index=dates, columns=header2)
df = pd.concat([df, df2], axis=1)
header3 = pd.MultiIndex.from_product(['roof', 'door', 'basement'], names = ['top', 'middle', 'bottom'])
data = 2*(np.random.randn(len(dates)))
df3 = pd.DataFrame(data, index=dates, columns=header3)
df = pd.concat([df, df3], axis=1)
现在我想xs
一个新的数据帧,它适用于所有在中间层有窗口的房屋:windf = df.xs('window', level='middle', axis=1)
但这显然漏掉了拼错的winZZw。在
那么,我如何将winZZw
替换为window
?
我发现的唯一方法是使用set_levels,但如果我理解正确,我需要将它提供给整个级别,即
^{pr2}$但这有两个问题:
我可以通过xs
创建一个只有winZZw
s的新df,然后用set_levels(df.shape[1]*[u'window'], level='middle')
设置级别,然后再次将其合并在一起,但是我想有一个更直接的类似于str.replace('winZZw', 'window')
的方法,但是我不知道怎么做。在
使用
rename
指定级别:相关问题 更多 >
编程相关推荐