首页 > 解决方案 > 将两列合并为一列,同时尊重升序

问题描述

您好,我想通过“Timestamp”和“Timestamp+0.4”的外部合并来合并我的“Timestamp”列。此外,我希望输入中的值仍然对应于这个新的“时间戳”合并列,并且在未定义值的地方具有 NaN(例如“输入”列中的 0.6 = NaN)

我的预期输出是这样的:

在此处输入图像描述

您知道如何实现这一目标吗?

这是创建数据框的代码

df = pd.DataFrame({'Timestamp':[0.2,0.4,0.8,1.2,1.4,1.6,2.0,2.4],
                  'input':[10,20,40,5,15,25,0,20]})
df["Timestamp+0.4"] = df["Timestamp"]+0.4

非常感谢 !

标签: pythonpandasnumpydataframe

解决方案


您可以使用concat沿特定轴连接数据帧。之后仅使用列作为参数删除重复项Timestamp,然后最后再次按Timestamp列对值进行排序。

import pandas as pd

df = pd.DataFrame({'Timestamp':[0.2,0.4,0.8,1.2,1.4,1.6,2.0,2.4],
                   'input': [10, 20, 40, 5, 15, 25, 0, 20]})

df1 = pd.DataFrame(df["Timestamp"]+0.4)

df = pd.concat([df, df1])
df["Timestamp"] = round(df["Timestamp"], 8)

df = df.drop_duplicates(subset=["Timestamp"], keep="first")
df = df.sort_values(["Timestamp"], ignore_index=True)

print(df)

来自df的输出

    Timestamp  input
0         0.2   10.0
1         0.4   20.0
2         0.6    NaN
3         0.8   40.0
4         1.2    5.0
5         1.4   15.0
6         1.6   25.0
7         1.8    NaN
8         2.0    0.0
9         2.4   20.0
10        2.8    NaN

推荐阅读