首页 > 解决方案 > 同步两个时间数据帧的最有效方法是什么

问题描述

我有一个这样的数据框:

时间 数据1 时间 数据2
0 0 0 0
0.1 1 0.2 1
0.2 1 / /

我想得到这个结果:

时间 数据1 数据2
0 0 0
0.1 1
0.2 1 1

我可以使用什么样的代码来同步所有数据帧?我使用了几个熊猫功能,但它们都不起作用,你能帮帮我吗?

谢谢

标签: pythonpandas

解决方案


IIUC 您首先将 2 个不同数据帧中的 DataFrame 与相应的 Time 和 Data 列分开,然后将 Time 列设置为每个数据帧的索引并将两者连接起来。这仅在两个 Time 列的类型相同时才有效:

df1 = df.iloc[:,:2].set_index(df.columns[0])
df2 = df.iloc[:,2:].set_index(df.columns[2])
df_sync = pd.concat([df1,df2], axis=1)

输出:

>>> print(df_sync)

    Data1 Data2
0       0     0
0.1     1   NaN
0.2     1     1
/     NaN     /

整个代码:

import pandas as pd
from io import StringIO

txt = '''Time   Data1   Time    Data2
0   0   0   0
0.1     1   0.2     1
0.2     1   /   /
'''

df = pd.read_csv(StringIO(txt), header=0, sep=r'\s+', skipinitialspace=True, engine='python', dtype='str')

df1 = df.iloc[:,:2].set_index(df.columns[0])
df2 = df.iloc[:,2:].set_index(df.columns[2])
df_sync = pd.concat([df1,df2], axis=1)

print(df_sync)

请注意,当我创建数据框时,我传递参数dtype='str'以确保两个时间列都是类型str


推荐阅读