036—pandas 按行将列名根据值由大到小排序

前言

数据处理中,按行排列的列名可以提供更直观的数据探索和分析方式。

你可以逐行查看列名,了解每列的含义和特征,有助于更好地理解数据集的结构和内容。

需求:

  • 需要增加一列「分布方式」,每行的值是本行基金名称对应列名及数量,顺序按照值大小,值为 0 的不显示

思路:

  • 先用 apply() 按行,将构成每行 Series 转为字典,这时字典的键为列名,值为数值。
  • 接着用列表推导式过滤值为 0 的项,得到一个列表。
  • 再用 join() 方法用顿号 、 将列表的所有项连接起来。
  • 最后将得到的结果指定为一个列。

使用步骤

读入数据

代码如下(示例):

python 复制代码
mport io
import pandas as pd


data = '''
基金名称 电子 传媒 计算机
 基金A  1  6   7
 基金B  0  3   8
 基金C  7  0   9

'''

df = pd.read_csv(io.StringIO(data), delim_whitespace=True) #通过指定delim_whitespace=True参数来指示使用空格作为分隔符
df
python 复制代码
# 代码:
# 先设置基金名称为索引,这时基金名称就不参加行的计算,仅值进行计算。
# 用 apply() 按行将每行 Series 进行排序,最后转为字典:
(
    df.set_index('基金名称')
    .apply(lambda x: x.sort_values(ascending=False).to_dict(), axis=1) #对每个基金的投资分布按照降序排序,并转换成字典的形式
)
python 复制代码
# 通过列表推导式,将值为 0 的过滤,得到列表:
(
    df.set_index('基金名称')
    .apply(lambda x: x.sort_values(ascending=False).to_dict(), axis=1)
    .map(lambda x: [f'{k}({v})' for k,v in x.items() if v>0])
)
python 复制代码
# 用中文顿号连接列表的项:
# 使用map()函数将每个Series对象中的字符串用'、'连接起来,形成一个新的字符串
col = (
    df.set_index('基金名称')
    .apply(lambda x: x.sort_values(ascending=False).to_dict(), axis=1)
    .map(lambda x: [f'{k}({v})' for k,v in x.items() if v>0])
    .map('、'.join)
)
col
python 复制代码
# 将得到的列值指定到数据中:
df.assign(行业分布=col.array) # col.array表示将列数据以数组的形式添加到DataFrame对象中

总结

以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

相关推荐
STR_Liang17 小时前
pandas.read_html 报错FileNotFoundError、OSError Traceback (most recent call last)
pandas
㳺三才人子2 天前
初探 Data Analysis - Matplotlib
python·plotly·pandas·matplotlib
quantdash_cc2 天前
告别自建 Requests/BS4 网页爬虫:基于 QuantDash 搭建零维保的高性能量化行情流水线
开发语言·爬虫·python·pandas·量化·quantdash
菜冻鱼3 天前
Python-sklearn-评估指标
开发语言·人工智能·python·机器学习·numpy·pandas·sklearn
菜冻鱼3 天前
Python-sklearn-模型选择
开发语言·人工智能·python·机器学习·numpy·pandas·sklearn
quantdash_cc3 天前
基于 QuantDash 5 分钟 K 线的网格交易策略参数网格搜索寻优实战
android·开发语言·pandas·量化·quantdash
FBI HackerHarry浩3 天前
Pandas 库中用于分类变量独热编码(One-Hot Encoding)的函数 pd.get_dummies() 函数
开发语言·人工智能·python·pandas
菜冻鱼7 天前
Python-pandas-索引与筛选
开发语言·笔记·python·numpy·pandas·学习方法
yanweijie03177 天前
Pandas 完整数据分析工作流实战(标准 5 步流程)
数据挖掘·数据分析·pandas
小趴蔡ha7 天前
04 Pandas 数据清洗实战:从表格读取到机器学习特征准备
人工智能·机器学习·pandas