python - 如何使用一系列列名从熊猫数据框中获取系列?
问题描述
df
我有一个带有数字数据的熊猫数据框。我也有一个系列s
具有相同的索引和由列标签df
组成的值,例如df
import pandas as pd
df = pd.DataFrame(
index=[0, 1, 2], columns=[0, 1, 2],
data=[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
)
s = pd.Series(index=[0, 1, 2]), data=[0, 1, 2])
我如何使用s
切片df
并获取另一个系列s1
,其中包含与中的对df
相对应的值作为它们的标识符,即(index, value)
s
.loc()
df
s1 = pd.Series(index=[0, 1, 2], data=[1, 5, 9])
解决方案
用于根据和DataFrame.lookup
查找值,然后从此查找值创建一个新系列:df
s.index
s
s1 = pd.Series(df.lookup(s.index, s), index=s.index)
DataFrame.stack
使用和索引的另一个想法DataFrame.loc
:
s1 = df.stack().loc[zip(s.index, s)].droplevel(1)
结果:
print(s1)
0 1
1 5
2 9
dtype: int64
推荐阅读
- html - 如何从 python 字段将图像加载到 img 标签中?
- python - 如何使用 Python 快速解压缩 S3 存储桶中的大型 zip 文件,同时减少内存使用
- mysql - Mysql BEFORE UPDATE 触发更改大表上的许多(但不是全部)列
- macos - 删除文件后无法打开 VSCode
- android - 重新选择底部导航选项卡后Android清除后台堆栈
- r - 如何在tidyverse中使用separate来拆分列?
- python - python包中模块的相互依赖关系
- python - gdal.SetGCPs() 使用的默认转换技术是什么?如何更改使用的转换?
- python - 如何在odoo中发送带有报告的电子邮件
- pypi - 我的 PyPI 发行版只安装 dist