gpt4 book ai didi

python - Pandas:如何将函数应用于不同的列

转载 作者:行者123 更新时间:2023-11-28 19:48:27 27 4
gpt4 key购买 nike

假设这是我的函数:

def function(x):
return x.str.lower()

这是我的 DataFrame (df)

   A         B     C       D 
0 1.67430 BAR 0.34380 FOO
1 2.16323 FOO -2.04643 BAR
2 0.19911 BAR -0.45805 FOO
3 0.91864 BAR -0.00718 BAR
4 1.33683 FOO 0.53429 FOO
5 0.97684 BAR -0.77363 BAR

我只想将该函数应用于 BD 列。 (将它应用于完整的 DataFrame 并不是答案,因为它会在数字列中产生 NaN 值)。

这是我的基本想法:df.apply(function, axis=1)

但我无法理解如何选择不同的列来应用该函数。我已经尝试了通过数字位置、名称等进行索引的所有方式。

我花了很多时间阅读这方面的内容。这不是其中任何一个的直接副本:

How to apply a function to two columns of Pandas dataframe

Pandas: How to use apply function to multiple columns

Pandas: apply different functions to different columns

Python Pandas: Using 'apply' to apply 1 function to multiple columns

最佳答案

只需从 df 中子选择列,通过忽略 axis 参数,我们按列操作而不是按行操作,这将非常重要,因为这里的行数多于列数:

df[['B','D']].apply(function)

这将针对每一列运行你的函数

In [186]:
df[['B','D']].apply(function)

Out[186]:
B D
0 bar foo
1 foo bar
2 bar foo
3 bar bar
4 foo foo
5 bar bar

您还可以过滤 df 以仅获取字符串 dtype 列:

In [189]:
df.select_dtypes(include=['object']).apply(function)

Out[189]:
B D
0 bar foo
1 foo bar
2 bar foo
3 bar bar
4 foo foo
5 bar bar

时间

列式与行式:

In [194]:    
%timeit df.select_dtypes(include=['object']).apply(function, axis=1)
%timeit df.select_dtypes(include=['object']).apply(function)

100 loops, best of 3: 3.42 ms per loop
100 loops, best of 3: 2.37 ms per loop

然而,对于明显更大的 dfs(按行),第一种方法会更好地扩展

关于python - Pandas:如何将函数应用于不同的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32588797/

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