看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
pandas处理数据和筛选数据能力非常强大,能够灵活地帮助我们选择我们要处理的数据。处理数据时apply()等方法可以让我们随心调用各种内置、字定义的函数方法来进行数据处理。本例是一个pandas处理数据的案例。
我们构造数据如下:
import pandas as pd
df = pd.DataFrame({'a': [*'FFA'], 'b': [1, 2, 3]})
df
'''
a b
0 F 1
1 F 2
2 A 3
'''
需求是将a列为F的替换为与对应值b列值下划线连接的字符,如F_1、F_2。
索引2行a列值不满足不替换。
我们可以先构造一下新的列,这个新列是需求中要求的两个字符的下划线连接新字符串,然后再用where等待替换为新的列,最后将这个替换后的列重新赋值给a列。
由于b列是数字,不能与a列做字符拼接,因此我们先将数据转为字符串,再用apply按行应用字符串的join()方法:
df.astype(str).apply('_'.join, axis=1)
'''
0 F_1
1 F_2
2 A_3
dtype: object
'''
得到拼接列后,再用wher()筛选a为F的,会保留符合条件的,不符合条件的用第二位传入值替换,我们传入原df.a列:
a = (
df.astype(str)
.apply('_'.join, axis=1)
.where(df.a=='F', df.a)
)
a
'''
0 F_1
1 F_2
2 A
dtype: object
'''
最后将这个结果重新指定给a列,覆盖原同名列:
df.assign(a=a)
'''
a b
0 F_1 1
1 F_2 2
2 A 3
'''
最终得到了我们想要的结果。
(完)
更新时间:2024-08-18 16:07:21 标签:pandas python 拼接 字符串