gpt4 book ai didi

pandas - 就地适用于满足条件的 Pandas 数据框列

转载 作者:行者123 更新时间:2023-12-03 13:33:47 26 4
gpt4 key购买 nike

考虑以下 Pandas 数据框:

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

我想对名称包含字符“x”的列应用一个函数(比如乘以 2)

这可以通过以下方式完成:
df.filter(regex='x').apply(lambda c: 2*c)

但没有到位。我的解决办法是:
tmp = df.filter(regex='x')
tmp = tmp.apply(lambda c: 2*c)
tmp['t'] = df['t']
df = tmp

这增加了更改列顺序的问题。有没有更好的办法?

最佳答案

使用 df.columns.str.contains('x')获取 bool 掩码以切片 df

df.loc[:, df.columns.str.contains('x')] *= 2
print(df)

t x1 x2
0 1 8 14
1 2 10 16
2 3 12 18

更笼统
def f(x):
return 2 * x

m = df.columns.str.contains('x')
df.loc[:, m] = f(df.loc[:, m])
print(df)

t x1 x2
0 1 8 14
1 2 10 16
2 3 12 18

使用 apply
m = df.columns.str.contains('x')
df.loc[:, m] = df.loc[:, m].apply(f)
print(df)

t x1 x2
0 1 8 14
1 2 10 16
2 3 12 18

关于pandas - 就地适用于满足条件的 Pandas 数据框列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43402663/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com