Consider the following pandas dataframe:
df = pd.DataFrame({'t': [1,2,3], 'x1': [4,5,6], 'x2': [7,8,9]} )
>>> print(df)
t x1 x2
0 1 4 7
1 2 5 8
2 3 6 9
I would like to apply a function (say multiplying by 2) to those columns with names containing the character 'x'
This can be done by:
df.filter(regex='x').apply(lambda c: 2*c)
but not in place. My solution is:
tmp = df.filter(regex='x')
tmp = tmp.apply(lambda c: 2*c)
tmp['t'] = df['t']
df = tmp
which has the added problem of changing the order of the columns. Is there a better way?