这是我关于堆栈溢出的第一个问题,如果我的问题不清楚,请告诉我如何帮助您。在
目标:使用Python和Pandas来外部连接(或合并)包含不同实验试验的数据集,其中每个试验的“x”轴非常相似,但有一些偏差。最重要的是,“x”轴增大,达到最大值,然后减小,通常与先前存在的“x”点重叠。在
问题:当我加入/合并“x”上的数据集时,“x”列被排序,这扰乱了收集数据的顺序,使其无法正确绘制。在
下面是一个小例子,说明我要做的事情:
不让我添加图片,因为我是新来的。下面是生成这些示例数据集的代码。在
数据集:
导入:
import numpy as np
import pandas as pd
import random as rand
代码:
^{pr2}$尝试合并/加入:
WomboCombo = Trial1.join(Trial2,how='outer',lsuffix=1,rsuffix=2, on='x')
WomboCombo2 = pd.merge(left=Trial1, right= Trial2, how = 'outer', left
尝试分成两部分,增加和减少部分(手动找到数据“x”开始减少的行号):
Trial1Inc = Trial1[0:8]
Trial2Inc = Trial2[0:7]
结果-合并效果很好,用“x”列连接messes,不确定原因:
Trial1Inc.merge(Trial2Inc,on='x',how='outer', suffixes=[1,2])
Incrementing section Merge Result
Trial1Inc.join(Trial2Inc,on='x',how='outer', lsuffix=1,rsuffix=2)
Incrementing section Join Result 希望我的例子是清楚的,试验1中的“x”列增加到5,然后又回到0。在试用版2中,我稍微改变了测试,因为我注意到我需要一个稍微高一点的“x”值的数据。试验2增加到7,然后迅速减小到0。在
我的最终目标是根据相应的x值绘制所有y值的平均值(试验之间有重叠)。在
如果有重叠,我可以添加误差线。Pandas对于我所要做的几乎是完美的,因为外部连接在没有重叠的地方添加了空值,并且能够在有重叠时水平地连接两个试验。在
现在剩下的就是弄清楚如何在“x”列上联接,但要保持其值先增大后减小的顺序。对我来说,首先增加“x”然后再减小“x”很重要,因为当查看“y”值时,似乎给定“x”处的初始“y”值似乎大于“x”减小时的“y”值(例如,在试验1中,当x=1,y=10000时,然而,在试验后期,当我们回到x=1,y=9000时,这一趋势很重要。当Pandas在合并之前对列进行排序时,没有出现一条清晰的曲线,显示“y”随着“x”的增加而减少,然后反过来,在数据连接的任何一点都会出现垂直向下的跳跃。在
我非常感谢您的任何帮助:
A)一个完美的解决方案,当“x”包含重复项时,让我加入“x”
B)一种有效的方法,将数据集分成增加“x”和“x”递减,这样我就可以分别合并每个试验的增加和减少部分,然后垂直合并它们。在
希望我能把我想解决的问题解释清楚。如果我能澄清什么,请告诉我
谢谢你的帮助!在
一种可能的解决方案是为您的试验行指定id,然后在id上进行合并。被排序的x应该保持值不在。在
我认为@xyzjayne拆分数据帧的想法是个好主意。在
拆分Trial1和Trial2:
拆分数据帧后,我们将
^{pr2}$higher
连接在一起,lowers
连接在一起:我们现在将它们组合起来,以获得一个数据帧
WomboCombo
输出:
^{4}$这是我正在尝试的,但是它没有处理不同数量的数据点。我喜欢gym hh的答案,尽管我不清楚你想要两列y,z对。所以你可以结合他的想法和这段代码来得到你需要的。在
输出:
^{pr2}$相关问题 更多 >
编程相关推荐