Pandas DataFrame.apply(~)
将指定的函数应用于 DataFrame 的每一行或每一列。
参数
1. func
| function
沿行或列应用的函数。
2. axis
| string
或 int
| optional
执行该函数所沿的轴:
轴 |
说明 |
---|---|
|
函数将应用于每一列。 |
|
函数将应用于每一行。 |
默认情况下,axis=0
。
3. raw
| boolean
| optional
-
如果
True
,则 NumPy 数组将作为func
的参数传递。 -
如果
False
,则将传递一个系列。
Performance-wise,如果您要应用还原 Numpy 函数,例如 np.sum
,则选择 raw=True
。默认情况下,raw=False
。
4. result_type
| string
或 None
| optional
如何解析 func
的 list-like 返回值。这仅在 axis=1
时相关(当 func
逐行应用时):
值 |
说明 |
---|---|
|
list-like 结果的值(例如 |
|
list-like 结果的值将减少为单个系列。 |
|
list-like 结果的值将被分成列,但与 |
|
行为取决于函数返回的值。如果返回 |
默认情况下,result_type=None
。请参阅下面的示例以进行说明。
5. args
| tuple
| optional
您想要提供给 func
的其他位置参数。
6. **kwds
| optional
您想要提供给 func
的其他关键字参数。
返回值
应用函数后生成的Series
或DataFrame
。
例子
在列上应用函数
考虑以下 DataFrame :
df = pd.DataFrame({"A":[2,3], "B":[4,5]})
df
A B
0 2 4
1 3 5
要按列应用 np.sum
函数:
df.apply(np.sum) # axis=0
A 5
B 9
dtype: int64
注意
如果您在应用 NumPy 还原函数(如 np.sum
)时设置 raw=True
,Pandas 可以从性能提升中受益。
在行上应用函数
考虑与之前相同的DataFrame:
df = pd.DataFrame({"A":[2,3], "B":[4,5]})
df
A B
0 2 4
1 3 5
要按行应用 np.sum
函数,请设置 axis=1
:
df.apply(np.sum, axis=1) # Returns a Series
0 6
1 8
dtype: int64
应用内置捆绑器
考虑与之前相同的DataFrame:
df = pd.DataFrame({"A":[2,3], "B":[4,5]})
df
A B
0 2 4
1 3 5
您可以使用内置函数(例如 tuple
、 list
甚至 Series
)捆绑值:
df.apply(tuple)
A (2, 3)
B (4, 5)
dtype: object
应用自定义函数
考虑与之前相同的DataFrame:
df = pd.DataFrame({"A":[2,3], "B":[4,5]})
df
A B
0 2 4
1 3 5
应用自定义函数:
def foo(col):
return 2 * col
df.apply(foo)
A B
0 4 8
1 6 10
我们的函数 foo
接受 Series
类型的列 ( axis=0
) 作为参数,并将转换后的列作为 Series
返回。
传入关键字参数
要将关键字参数传递给 func
:
def foo(col, x):
return x * col
df.apply(foo, x=2)
A B
0 4 8
1 6 10
解析list-like返回值的不同方式
考虑以下 DataFrame :
df = pd.DataFrame({"A":[4,5], "B":[6,7]}, index=["a","b"])
df
A B
a 4 6
b 5 7
当函数的返回类型为 list-like
时,参数 result_type
起作用。
返回类型 无
当 return_type
未设置时,默认行为是将 list-like
返回值放在 Series
中:
df.apply(lambda x: [1,2,3], axis=1) # Returns a Series
a [1, 2, 3]
b [1, 2, 3]
dtype: object
请注意,lambda x: [1,2,3]
相当于以下内容:
def foo(x): # The function name isn't important here
return [1,2,3]
返回类型 展开
当 return_type="expand"
时,list-like
的值将被分成列,从而产生 DataFrame
:
df.apply(lambda x: [1,2,3], axis=1, result_type="expand") # Returns a DataFrame
0 1 2
a 1 2 3
b 1 2 3
请注意,我们不再拥有原始列名称 A
和 B
。
返回类型广播
当 return_type="broadcast"
时,list-like 值将被分成列,但与 "expand"
不同,列名称将被保留:
df.apply(lambda x: [1,2], axis=1, result_type="broadcast") # Returns a DataFrame
A B
a 1 2
b 1 2
为此,list-like
的长度必须等于源 DataFrame 中的列数。这意味着在这种情况下返回 [1,2,3]
而不是 [1,2]
将导致错误。
相关用法
- Python Pandas DataFrame applymap方法用法及代码示例
- Python Pandas DataFrame append方法用法及代码示例
- Python Pandas DataFrame agg方法用法及代码示例
- Python Pandas DataFrame all方法用法及代码示例
- Python Pandas DataFrame add方法用法及代码示例
- Python Pandas DataFrame asfreq方法用法及代码示例
- Python Pandas DataFrame any方法用法及代码示例
- Python PySpark DataFrame alias方法用法及代码示例
- Python Pandas DataFrame asof方法用法及代码示例
- Python Pandas DataFrame add_prefix方法用法及代码示例
- Python Pandas DataFrame add_suffix方法用法及代码示例
- Python Pandas DataFrame at属性用法及代码示例
- Python Pandas DataFrame axes属性用法及代码示例
- Python Pandas DataFrame astype方法用法及代码示例
- Python Pandas DataFrame align方法用法及代码示例
- Python Pandas DataFrame assign方法用法及代码示例
- Python Pandas DataFrame at_time方法用法及代码示例
- Python Pandas DataFrame abs方法用法及代码示例
- Python Pandas DataFrame empty属性用法及代码示例
- Python Pandas DataFrame pop方法用法及代码示例
- Python Pandas DataFrame nsmallest方法用法及代码示例
- Python Pandas DataFrame sample方法用法及代码示例
- Python Pandas DataFrame items方法用法及代码示例
- Python Pandas DataFrame max方法用法及代码示例
- Python Pandas DataFrame swaplevel方法用法及代码示例
注:本文由纯净天空筛选整理自Isshin Inada大神的英文原创作品 Pandas DataFrame | apply method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。