【发布时间】:2019-09-03 01:28:53
【问题描述】:
合并 2 个数据框,这些数据框有一些常见的列名和一些不同的列名。产生新的列名,它们都不在,而是将每个名称的字符串组合在一起。
2 个数据框:
df.columns 包括 'particle'、'frame'、'x old'、'y old' Corrected_traj.columns 有 'particle', 'frame', 'x', 'y'
数据框都没有“frame_x”或“frame_y”。
然而,当我尝试合并时,我最终没有名为“frame”的列,而是 2 个新列“frame_x”和“frame_y”
当前没有命名数据帧索引,尽管它们链接到帧号。我一直在努力避免索引和列号具有相同名称的相关错误。因此,一些代码试图删除索引名称等。不确定这是否相关,因此包括在内。
数据帧是由 trackpy 中的函数生成的,但我认为问题与 pd.merge 有关。
总体目标是从粒子的运动中减去一些粒子的平均漂移。我想将旧的 x 和 y 移动到 'x old' 和 'y old' 并将更正的值放入 'x' 和 'y'
drift = tp.motion.compute_drift(df)
corrected_traj = tp.motion.subtract_drift(df[['frame','x','y','particle']].copy(), drift)
df['x old'] = df['x'].copy()
df['y old'] = df['y'].copy()
df = df.drop(columns=['x','y'])
corrected_traj.index.name=None
df = pd.merge(df, corrected_traj,
on='particle')
抱歉,我尝试缩进并点击代码,但似乎无法正确标记
我期待一个带有'x'、'y'、'frame'、'particle'、'x old'、'y old'的数据框df。
我得到的是'x'、'y'、'frame_x'、'frame_y'、'x old'、'y old'、'particle'
'frame x 和 'frame y' 的内容似乎确实是帧编号值。
【问题讨论】:
-
听起来你在两个数据帧中都有'frame'列,并且由于你告诉pandas在合并时只使用'particle',它留下了两列名为'frame'的列,它不能合并,因此它向您展示了两者,为“df”中的值添加了后缀“_x”,为“corrected_traj”中的值添加了“_y”