我有一个这样的数据帧:
df = pd.DataFrame({'c1': list('aba'), 'c2': list('aaa'), 'ignore_me': list('bbb'), 'c3': list('baa')})
c1 c2 ignore_me c3
0 a a b b
1 b a b a
2 a a b a
和一本字典,看起来像这样
d = {'a': "foo", 'b': 'bar'}
现在,我希望将d
的值map
到与regex
^c\d+$
匹配的列。
我能做到
df.filter(regex='^c\d+$').apply(lambda x: x.map(d))
c1 c2 c3
0 foo foo bar
1 bar foo foo
2 foo foo foo
但是,所有与正则表达式不匹配的列都会丢失。
因此,我可以这样做:
tempdf = df.filter(regex='^c\d+$')
df.loc[:, tempdf.columns] = tempdf.apply(lambda x: x.map(d))
,它给出所需的输出。
c1 c2 ignore_me c3
0 foo foo b bar
1 bar foo b foo
2 foo foo b foo
是否有更智能的解决方案可以避免tempory数据帧?
https://stackoverflow.com/questions/56419136
复制相似问题