首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成新列名的pd.merge

生成新列名的pd.merge
EN

Stack Overflow用户
提问于 2019-09-02 16:12:29
回答 1查看 263关注 0票数 2

合并两个数据文件,它们有一些公共的和一些不同的列名。结果在新列名中,这两种名称都不在,而是将每个列中的名称字符串组合在一起。

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’中。

代码语言:javascript
复制
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”的内容似乎是帧号值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-02 17:28:53

如果您想要有一个带有“x”、“y”、“框架”、“粒子”、“x”、“you”的dataframe df,那么您应该合并如下,在连接作用域中合并粒子列和帧列。否则,它们将被视为基于传递给" on“的参数而连接的列,因此被视为frame_x、frame_y来分别标识它们。

代码语言:javascript
复制
df = pd.merge(df, corrected_traj, on=['particle', 'frame'])
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57760047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档