Pandas_排序+字符串处理

排序

# 1)Series排序
df['aqi'].sort_values()		# 升序
df['aqi'].sort_values(ascending=False)		# 降序

# 2)DataFrame的排序
# 2.1)单列排序:
df.sort_values(by='aqi')		# 升序
df.sort_values(by='aqi', ascending=False)		# 降序

# 2.1)多列排序:
df.sort_values(by=['aqiLevel', 'bWendu'])		# 两个字段都是升序
df.sort_values(by=['aqiLevel', 'bWendu'], ascending=False)		# 两个字段都是升序
df.sort_values(by=['aqiLevel', 'bWendu'], ascending=[True, False])		# 分别指定生序和降序

字符串处理

# str属性为Series的!!!

# 1)获取Series的str属性:
df['bWendu'].str
df['bWendu'].str.replace('度', '')		# 字符串替换
df['bWendu'].str.isnumeric()		# 判断是不是数字
df['aqi'].str.len()		# 计算长度

# 2)使用str的startswith,contains得到的bool的Series可以做条件查询
condition = df['ymd'].str.startswith('2018-01')

# 3)需要多次str处理的链式操作
# 如果提取201801这样的数字月份?
# 先将日期2018-01-31替换成20180131
df['ymd'].str.replace('-', '')		# 再进行切片
df['ymd'].str.replace('-', '').str.slice(0, 6)		# 注意必须先转换成字符串

# 或者下面的方法进行切片
df['ymd'].str.replace('-', '').str[0:6]		# 切片

# 4)使用正则表达式的处理
def get_year_month_day(d):
year, month, day = d['ymd'].split('-')		# 根据 - 进行分割
return f'{year}年{month}月{day}日'		# 格式化
df['中文日期'] = df.apply(get_year_month_day, axis=1)

# 5)如何将2018年12月31日中的年月日三个中文字符去除?
# 5.1)方法1:链式replace
df['中文日期'].str.replace('年', '').str.replace('月', '').str.replace('日','')
# 5.2)方法2:正则表达式替换
df['中文日期'].str.replace('[年月日]', '')

posted @ 2022-03-08 16:13  aall_blue  阅读(297)  评论(0)    收藏  举报