python - 如何使用熊猫在同一行索引下拥有多行
问题描述
我正在编写一个脚本来标准化来自 RT-PCR 的数据。我正在从 tsv 文件中读取数据,并且正在努力将其放入 pandas 数据框中,以便它可以使用。这里的问题是行索引具有相同的名称,是否可以使其成为层次结构?
我正在使用 Python 3.6。我试过 .groupby() 和 .pivot() 但我似乎无法让它做我想做的事。
def calculate_peaks(file_path):
peaks_tsv = pd.read_csv(file_path, sep='\t', header=0, index_col=0)
我的输入文件是这样的: 输入文件图像
我的预期输出:
EMB.brep1.peak EMB.brep1.length EMB.brep2.peak EMB.brep2.length EMB.brep3.peak EMB.brep3.length
primer name
Hv161 0 19276 218.41 20947 218.39 21803 218.26
1 22906 221.35 26317 221.17 26787 221.21
Hv223 0 4100 305.24 5247 305.37 4885 305.25
1 2593 435.25 3035 435.30 2819 435.32
2 4864 597.40 5286 597.20 4965 596.60
实际输出:
EMB.brep1.peak EMB.brep1.length EMB.brep2.peak EMB.brep2.length EMB.brep3.peak EMB.brep3.length
primer name
Hv161 19276 218.41 20947 218.39 21803 218.26
Hv161 22906 221.35 26317 221.17 26787 221.21
Hv223 4100 305.24 5247 305.37 4885 305.25
Hv223 2593 435.25 3035 435.30 2819 435.32
Hv223 4864 597.40 5286 597.20 4965 596.60
解决方案
你可以这样做:
peaks_tsv = pd.read_csv(file_path, sep='\t', header=0)
peaks_tsv['idx'] = peaks_tsv.groupby('primer name').cumcount()
peaks_tsv.set_index(['primer name', 'idx'], inplace=True)
推荐阅读
- python - django-rest-framework "AttributeError: 'function' object has no attribute 'get_extra_actions' "
- android - 为什么我的带有 LIKE 的 SQLite 查询不能正常工作?
- reactjs - SharePoint React 项目需要额外的加载器
- keras - Keras 中的张量操作
- excel - 热以防止每行中的重复条目,并且可以在每个单元格中输入两个可能的值?
- javascript - 如何使用它们的 ID 对元素求和?
- python - 用索引数组切片numpy数组,其中一些超出范围
- video - 如何获得 LinkedIN 的直播权限
- pyrender - 如何从 pyrender 中的 3d 世界坐标中获取像素坐标
- discord.py - 通过 Discord Bot 启动 Minecraft 服务器