python - Python 3:通过解析 pandas 数据帧来构造变量
问题描述
我有以下数据框,其中包含id
, start
, end
,列name
:
A 7 340 string1
B 12 113 string2
B 139 287 string3
B 301 348 string4
B 379 434 string5
C 41 73 string6
C 105 159 string7
我正在使用以下命令将其读入python3 pandas
:
import pandas
df = pandas.read_csv("table", comment="#", header=None, names=["id", "start", "end", "name"])
现在我需要为每个 , 解析和df
提取,并将其解析为以下格式的列表:id
start
end
name
mylist = [GraphicFeature(start=XXX, end=YYY, color="#ffffff", label="ZZZ")]
XXX
这里是start
,YYY
是end
,ZZZ
是“名字”。因此,该列表的项目数与每个 的行数一样多id
。
GraphicFeature
只是模块的成员名称。
我想过像这样循环数据框:
uniq_val = list(df["id"].unique())
for i in uniq_val:
extracted = df.loc[df["id"] == i]
但是我该如何构建mylist
呢?(构建列表后还会有一些其他的绘图命令)。
因此,我在循环中的预期“输出”是:
对于 id A
:
mylist = [GraphicFeature(start=7, end=340, color="#ffffff", label="string1")]
对于 id B
:
mylist = [GraphicFeature(start=12, end=113, color="#ffffff", label="string2"), GraphicFeature(start=139, end=287, color="#ffffff", label="string3"), GraphicFeature(start=301, end=348, color="#ffffff", label="string4"), GraphicFeature(start=379, end=434, color="#ffffff", label="string5")]
对于 id C
:
mylist = [GraphicFeature(start=41, end=73, color="#ffffff", label="string6"), GraphicFeature(start=105, end=159, color="#ffffff", label="string7")]
解决方案
使用 for 循环
l=[[GraphicFeature(start=x[0], end=x[1], color="#ffffff", label=x[2])for x in zip(y.start,y.end,y.name) ] for _,y in df.groupby('id')]
推荐阅读
- powershell - RIPE:如何使用基于 descr 属性的 REST API 查找 IP 地址
- electron - 电子模块协议在幕后是如何工作的?
- kotlin - Kotlin compose for desktop 窗口的问题
- github - 如何使 pr 受让人成为适当的环境变量?
- ios - PDFViewPageChanged 在 PDFKit 中不可靠
- javascript - 为什么 setPaintProperty 与填充颜色和停止为 mapbox-gl 中的图层添加额外的颜色?
- javascript - GLSL 知道统一的数组长度
- php - PHP 中的 Swish 支付 API
- php - Foreach 不修改 php 中的单个值
- r - 试图进行方差分析