J'ai deux pandas dataframes que je voudrais fusionner/join ensembleFusionner deux pandas dataframes avec index timeseries
Par exemple:
#required packages
import os
import pandas as pd
import numpy as np
import datetime as dt
# create sample time series
dates1 = pd.date_range('1/1/2000', periods=4, freq='10min')
dates2 = dates1
column_names = ['A','B','C']
df1 = pd.DataFrame(np.random.randn(4, 3), index=dates1,
columns=column_names)
df2 = pd.DataFrame(np.random.randn(4, 3), index=dates2,
columns=column_names)
df3 = df1.merge(df2, how='outer', left_index=True, right_index=True, suffixes=('_x', '_y'))
De là, je voudrais fusionner les deux ensembles de données dans le manière suivante (note l'ordre des colonnes):
A_x A_y B_x B_y C_x C_y
2000-01-01 00:00:00 2000-01-01 00:00:00 -0.572616 -0.867554 -0.382594 1.866238 -0.756318 0.564087
2000-01-01 00:10:00 2000-01-01 00:10:00 -0.814776 -0.458378 1.011491 0.196498 -0.523433 -0.296989
2000-01-01 00:20:00 2000-01-01 00:20:00 -0.617766 0.081141 1.405145 -1.183592 0.400720 -0.872507
2000-01-01 00:30:00 2000-01-01 00:30:00 1.083721 0.137422 -1.013840 -1.610531 -1.258841 0.142301
je voudrais préserver les indices de trame de données soit par la création d'une trame de données multi-index ou la création d'une colonne pour le second index. Serait-il plus facile d'utiliser merge_ordered au lieu de fusionner ou rejoindre?
Toute aide est appréciée.
Je pense que c'est proche de ce que je veux mais l'ordre des colonnes n'est pas exactement ce que je veux. Je dois le commander A_x A_y B_x B_y ... et ainsi de suite. Y at-il un moyen de trier les colonnes de cette façon? peut-être une fonction de tri en plus de cela? –
@MooseDrool, vous pouvez utiliser df.sort_index (axis = 1, inplace = True) – Vaishali
Cela a du sens! –