pd.合并生成新列名

2024-05-16 04:23:11 发布

您现在位置:Python中文网/ 问答频道 /正文

合并两个数据帧,其中有一些共同的和一些不同的列名。产生新的列名,这些列名既不在其中,也不在每个列名中,而是合并了名称字符串。你知道吗

2个数据帧:

你知道吗测向列其中有“particle”、“frame”、“x old”、“y old” 已更正_traj.列有'particle'、'frame'、'x'、'y'

数据帧都没有“frame\u x”或“frame\u y”。你知道吗

但是,当我尝试合并时,结果没有名为“frame”的列,而是有两个新列“frame\ux”和“frame\uy”

两个数据帧索引当前都未命名,尽管它们链接到帧编号。我一直在努力避免索引和列号具有相同名称的错误。因此,一些代码试图删除索引名等不确定这是否是相关的,所以已经包括在内。你知道吗

数据帧是由trackpy的函数生成的,但我认为问题与pd.合并. 你知道吗

总的目标是从粒子的运动中减去一些粒子的平均漂移。我想把原来的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')

抱歉,我试过缩进和点击代码,但似乎无法使其正确标记

我希望数据帧df带有“x”、“y”、“frame”、“particle”、“x old”、“y old”。你知道吗

取而代之的是“x”,“y”,“frame\u x”,“frame\u y”,“x old”,“y old”,“particle”

“frame x”和“frame y”的内容似乎是帧编号值。你知道吗


Tags: 数据代码名称df粒子frameold编号
1条回答
网友
1楼 · 发布于 2024-05-16 04:23:11

如果您想要有一个带有“x”、“y”、“frame”、“particle”、“x old”、“y old”的dataframe df,那么您应该按如下方式合并,以便在连接范围中合并particle和frame列。否则,它们将被视为基于传递给“on”的参数进行连接的列,因此将被视为frame_x、frame_y以分别标识它们。你知道吗

df = pd.merge(df, corrected_traj, on=['particle', 'frame'])

相关问题 更多 >