import
pandas
as
pd
os
.
chdir
(
r'F:\ant_python\代码03_Python使用Pandas入门数据分析\ant-learn-pandas'
)
df
=
pd
.
read_csv
(
"./datas/beijing_tianqi/beijing_tianqi_2017-2019.csv"
)
# df['yWendu'] = df['yWendu'].str.replace('℃','').astype(int) # 反复运行会报错
# AttributeError: Can only use .str accessor with string values!
# df.apply(my_func,axis=1) # 不加result_type='expand',仅返回元组
df
[
'bWendu'
]
=
df
[
'bWendu'
]
.
apply
(
lambda
x
:
int
(
str
(
x
)
.
replace
(
'℃'
,
''
)
)
)
df
[
'yWendu'
]
=
df
[
'yWendu'
]
.
apply
(
lambda
x
:
int
(
str
(
x
)
.
replace
(
'℃'
,
''
)
)
)
df
.
head
(
)
def
my_func
(
row
)
:
return
row
[
'bWendu'
]
-
row
[
'yWendu'
]
,
(
row
[
'bWendu'
]
+
row
[
'yWendu'
]
)
/
2
df
[
[
'wencha'
,
'avg'
]
]
=
df
.
apply
(
my_func
,
axis
=
1
,
result_type
=
'expand'
)
df
.
head
(
)
#
apply
函数的基本语法
我们将要应用的函数和要应用它的轴作为参数传递。若要将函数应用于每一列,请将0或'index'传递给axis参数,默认情况下axis参数为0。若要将函数应用于每一行,请将1或'columns'传递给axis参数。
df
_rep = d
(1)insert 方法
使用
pandas
的 insert 方法,第一个参数指定插入列的位置,第二个参数指定插入列的列名,第三个参数指定插入列的数据。
data.insert(data.shape[1], 'd', 0)
a b c d
0 1 2 3 0
1 4 5 6 0
2 7 8 9 0
df
= pd.DataFrame({'col1': [1, 2], 'col2': [3, 4]})
col1 col2
在
pandas
中,pipe、
apply
和
apply
map都是用于数据处理和转换的函数。
- pipe函数允许将多个函数链接在一起,形成链式编程。通过pipe函数,可以直接将前一个函数的输出作为后一个函数的输入,方便
进行
多个数据处理操作。
-
apply
函数用于对DataFrame或Series中的每一行或每一列应用自定义函数。
apply
函数通过传递一个函数作为参数,对数据
进行
逐行或逐列的处理和转换。
-
apply
map函数用于对DataFrame中的每一个元素应用自定义函数。
apply
map函数通过传递一个函数作为参数,对
表格
中的每个元素
进行
处理和转换。
举个例子,假设有一个DataFrame
df
:
```
python
import
pandas
as pd
import numpy as np
df
= pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]})
如果我们想要对DataFrame中的每一个元素
进行
平方操作,可以
使用
apply
map函数:
```
python
df
=
df
.
apply
map(lambda x: x**2)
如果我们想要对DataFrame中的每一行
进行
求和操作,可以
使用
apply
函数:
```
python
df
=
df
.
apply
(lambda row: row.sum(), axis=1)
如果我们想要对DataFrame
进行
多个数据处理操作,可以
使用
pipe函数:
```
python
def add_n(
df
, n):
return
df
+ n
def append_
df
_n(
df
,
df
2, n):
return pd.concat([
df
,
df
2 + n])
df
= (
df
.pipe(add_n, 10)
.pipe(append_
df
_n,
df
2=
df
, n=6))