2つのデータフレームがあります。
import pandas as pd
rep1 = pd.DataFrame.from_items([('Probe', ['x', 'y', 'z']), ('Gene', ['foo', 'bar', 'qux']), ('RP1',[1.00,23.22,11.12]),('RP1.pacall',["A","B","C"]) ], orient='columns')
pg = rep1[["Probe","Gene"]]
生成するもの:
In [105]: rep1
Out[105]:
Probe Gene RP1 RP1.pacall
0 x foo 1.00 A
1 y bar 23.22 B
2 z qux 11.12 C
In [107]: pg
Out[107]:
Probe Gene
0 x foo
1 y bar
2 z qux
次に、に挿入pg
してrep1
、次のようにします。
Probe Gene RP1 Probe Gene RP1.pacall
0 x foo 1.00 x foo G
1 y bar 23.22 y bar I
2 z qux 18.12 z qux K
私はこれを試しましたが失敗しました:
In [101]: rep1.insert(1,["Probe","Gene"],pg)
TypeError: unhashable type: 'list'
それを行う正しい方法は何ですか?
concat
paramaxis = 1
を呼び出して渡し、列ごとに連結します。
In [72]:
pd.concat([rep1,pg], axis=1)
Out[72]:
Probe Gene RP1 RP1.pacall Probe Gene
0 x foo 1.00 A x foo
1 y bar 23.22 B y bar
2 z qux 11.12 C z qux
上記を実行すると、少し奇妙ですが正しい動作になることに注意してください。
In [73]:
merged = pd.concat([rep1,pg], axis=1)
merged['Probe']
Out[73]:
Probe Probe
0 x x
1 y y
2 z z
特定の列の順序を実現するには、元のdf列をスライスして、それらのサブセットを選択する必要があります(doubleの使用に注意してください[[]]
)。
In [76]:
pd.concat([rep1[['Probe','Gene','RP1']], pg, rep1[['RP1.pacall']]], axis=1)
Out[76]:
Probe Gene RP1 Probe Gene RP1.pacall
0 x foo 1.00 x foo A
1 y bar 23.22 y bar B
2 z qux 11.12 z qux C
concat、merge、joinには挿入ポイントはありません
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加