在Pandas中将频数表转换为原始数据
解决频数表转原始观测值Series的问题
嘿,我明白你要做的事——把频数表格式的DataFrame展开成包含原始重复观测值的Series对吧?这在数据处理里挺常见的,用Pandas就能轻松搞定,给你两种简单的方法:
方法一:用Series.repeat()(最简洁高效)
首先我们先构造你描述的示例DataFrame:
import pandas as pd # 模拟你的输入数据 df = pd.DataFrame({ 'obs': [-0.3, 0.9, 1.4], 'count': [3, 2, 5] })
接下来直接使用repeat()方法,让每个obs值重复对应的count次数:
# 生成目标Series expanded_series = df['obs'].repeat(df['count']).reset_index(drop=True)
运行后,expanded_series就是你想要的结果:
0 -0.3 1 -0.3 2 -0.3 3 0.9 4 0.9 5 1.4 6 1.4 7 1.4 8 1.4 9 1.4 Name: obs, dtype: float64
方法二:用DataFrame索引重复(更直观理解逻辑)
如果你想更清晰地看到索引的变化过程,也可以通过重复DataFrame的索引来实现:
expanded_series = df.loc[df.index.repeat(df['count']), 'obs'].reset_index(drop=True)
这个方法的逻辑是先把每个行索引重复count次,再通过索引取出对应的obs值,最后重置索引去掉原有的重复索引。
两种方法都能达到你想要的效果,第一种更简洁高效,推荐优先使用~
内容的提问来源于stack exchange,提问作者Martan
相关产品推荐
相关产品推荐

