合并两个数据文件,它们有一些公共的和一些不同的列名。结果在新列名中,这两种名称都不在,而是将每个列中的名称字符串组合在一起。
2个数据文件:
df.columns有‘粒子’,‘框架’,'x旧‘,'y’旧‘corrected_traj.columns’有‘粒子’,‘框架’,'x','y‘
两个dataframe都没有“frame_x”或“frame_y”。
然而,当我试图合并时,我最终没有一个名为“frame”的列,而是两个新列“frame_x”和“frame_y”。
当前两个数据格式索引都没有命名,尽管它们被链接到帧号。我一直试图避免与索引和列号相同的错误关联。因此,一些试图删除索引名等的代码不确定这是否相关,所以包括在内。
数据文件是由trackpy的函数生成的,但我认为这个问题与pd.merge有关。
总体目标是从粒子的运动中减去一些粒子的平均漂移。我想把旧的x和y移到'x‘和'y’,并将校正后的值放在'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”、“粒子”、“x old”、“y old”的数据格式df。
相反,我得到了'x','y','frame_x',‘框架_y’,'x旧‘,'y旧’,‘粒子’
“框架x”和“框架y”的内容似乎是帧号值。
发布于 2019-09-02 17:28:53
如果您想要有一个带有“x”、“y”、“框架”、“粒子”、“x”、“you”的dataframe df,那么您应该合并如下,在连接作用域中合并粒子列和帧列。否则,它们将被视为基于传递给" on“的参数而连接的列,因此被视为frame_x、frame_y来分别标识它们。
df = pd.merge(df, corrected_traj, on=['particle', 'frame'])https://stackoverflow.com/questions/57760047
复制相似问题