如何基于两个同索引的Pandas DataFrame高效生成指定规则的Series?
嘿,这事儿不难,用Pandas的向量化操作就能高效搞定,完全不用写低效的循环!
具体步骤
首先得确保你已经导入了pandas库:
import pandas as pd
先把你的两个DataFrame定义好:
a = pd.DataFrame([5, 11], columns=['A'], index=[1, 2]) b = pd.DataFrame([2, 3], columns=['B'], index=[1, 2])
接下来一行代码就能算出目标Series C,完全贴合你的计算公式:
C = (a['A'] - a.index) / b['B']
运行后你会得到想要的结果:
1 2.0 2 3.0 dtype: float64
为什么这么高效?
a['A']会把DataFrame里的A列提取成Series,a.index获取到对应的索引值,Pandas的向量化减法会自动逐元素计算每个A值减去它对应的索引,比手动循环快得多。- 然后直接除以
b['B']提取的Series,因为两个Series的索引完全匹配,Pandas会自动按索引对齐做逐元素除法,根本不用操心索引对应问题。
另外你提到原问题标题是Series但实际用了DataFrame,这里的处理完全没问题——我们提取的列本身就是Series,最终计算结果也是符合要求的Series哦。
内容的提问来源于stack exchange,提问作者Markus Löffler
相关产品推荐
相关产品推荐

