を組み合わせたときに、インデックスと列の順序を保持私たちは、次のデータフレームを持っていると言う:データフレーム
import pandas as pd
import numpy as np
df1_column_array = [['foo', 'bar'],
['A', 'B']]
df1_column_tuple = list(zip(*df1_column_array))
df1_column_header = pd.MultiIndex.from_tuples(df1_column_tuple)
df1_index_array = [['one','two'],
['0', '1']]
df1_index_tuple = list(zip(*df1_index_array))
df1_index_header = pd.MultiIndex.from_tuples(df1_index_tuple)
df1 = pd.DataFrame(np.random.rand(2,2), columns = df1_column_header, index = df1_index_header)
print(df1)
foo bar
A B
one 1 0.755296 0.101329
two 2 0.925653 0.587948
df2_column_array = [['alpha', 'beta'],
['C', 'D']]
df2_column_tuple = list(zip(*df2_column_array))
df2_column_header = pd.MultiIndex.from_tuples(df2_column_tuple)
df2_index_array = [['three', 'four'],
['3', '4']]
df2_index_tuple = list(zip(*df2_index_array))
df2_index_header = pd.MultiIndex.from_tuples(df2_index_tuple)
df2 = pd.DataFrame(np.random.rand(2,2), columns = df2_column_header, index = df2_index_header)
print(df2)
alpha beta
C D
three 3 0.751013 0.957824
four 4 0.879353 0.045079
私はこれらのデータフレームを生成するために結合したいと思います:
foo bar alpha beta
A B C D
one 1 0.755296 0.101329 NaN NaN
two 2 0.925653 0.587948 NaN NaN
three 3 NaN NaN 0.751013 0.957824
four 4 NaN NaN 0.879353 0.045079
私は連結をしようとすると、の順番をインデックスは保持されますが、カラムのインデックスは保持されません。
df_joined = pd.concat([df1,df2])
print(df_joined)
alpha bar beta foo
C B D A
one 1 NaN 0.101329 NaN 0.755296
two 2 NaN 0.587948 NaN 0.925653
three 3 0.751013 NaN 0.957824 NaN
four 4 0.879353 NaN 0.045079 NaN
結合しようとすると、列の順序nsは保持されますが、インデックスではありません。
df_joined = df1.join(df2, how = 'outer')
print(df_joined)
foo bar alpha beta
A B C D
four 4 NaN NaN 0.879353 0.045079
one 1 0.755296 0.101329 NaN NaN
three 3 NaN NaN 0.751013 0.957824
two 2 0.925653 0.587948 NaN NaN
DataFramesを結合するとき、どのように列とインデックスの順序を保持できますか?
編集1: 注:これはサンプルデータです。私の現実の世界のデータにはソートするための便利なラベル(1,2,3,4など)がありません。
編集2: 私の現実世界のデータへのソリューションを提案して適用する場合、私は次のエラーを取得する:
Exception: cannot handle a non-unique multi-index!
謝罪を明確にされていないために:これはサンプルデータである、私の実世界のデータは便利なラベルを持っていない(例えば1,2,3,4)並べ替える – BdB
私はこの解決策を見つける、編集された答えを確認してください。 – jezrael
それは素晴らしいです、ありがとう! – BdB