私はマップする必要がある(データが生物学のおかげです)2つの全く異なるデータフレームを持っています。そこにあるパンダのチュートリアルはすべて、ずっと簡単な変換であり、成功していないネストされた4つのループなしで、これを解決することはできません。 Excelに戻らずにこの問題を解決するための非常に不思議な方法に興味があります。Pandas:異なるサイズのDataFrames間の複雑なマッピング
最初は、このdf1のようなものです。 a-jカテゴリーの何千もの遺伝子の0および1の観測。
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.random.randint(0,2,size =(10,10)),columns=list('abcdefghij'), index = ['gene1','gene2','gene3','gene4','gene5','gene6','gene7','gene8','gene9','gene10'])
print(df1)
a b c d e f g h i j
gene1 1 0 1 0 1 0 1 1 1 0
gene2 0 1 0 0 0 0 0 0 1 0
gene3 0 1 1 1 1 1 0 0 0 0
gene4 1 0 1 0 0 1 0 1 1 1
gene5 0 0 1 0 0 0 0 0 0 0
gene6 0 1 0 0 1 0 1 0 1 0
gene7 1 1 0 1 1 0 0 0 1 0
gene8 0 0 0 1 1 1 1 0 1 0
gene9 1 0 1 0 1 0 1 1 0 1
gene10 1 0 0 0 1 0 1 0 1 1
次に、このdf2のようなものです。下位レベルのものの上位レベルのカテゴリ(X-W)のマッピング。この女の子にはNaNと索引はありません。
df2 = pd.DataFrame({'X': ['a','NaN','NaN','NaN'],
'Y': ['d', 'b', 'c','f'],
'Z':['g', 'h','e','NaN'],
'W': ['i', 'j','NaN','Nan']},index=None)
print(df2)
W X Y Z
0 i a d g
1 j NaN b h
2 NaN NaN c e
3 Nan NaN f NaN
私が必要とするものは、result1のようなものです。ここに別のトリッキーなものがあります。例えば。 gene4はiとjのカテゴリにあり、どちらもWにありますが、result1.loc ['gene4'、 'W']には '1'だけが必要です。最終的な結果は依然としてバイナリである必要があります。
result1 = pd.DataFrame({'X': ['1','0','0','1','0','0','1','0','1','1'],
'Y': ['1','1','1','1','1','1','1','1','1','0'],
'Z': ['1','0','1','1','0','1','1','1','1','1'],
'W': ['1','1','0','1','0','1','1','1','1','1']}, index = ['gene1','gene2','gene3','gene4','gene5','gene6','gene7','gene8','gene9','gene10'])
print(result1)
W X Y Z
gene1 1 1 1 1
gene2 1 0 1 0
gene3 0 0 1 1
gene4 1 1 1 1
gene5 0 0 1 0
gene6 1 0 1 1
gene7 1 1 1 1
gene8 1 0 1 1
gene9 1 1 1 1
gene10 1 1 0 1
これは別の可能な結果フォーマットでもあります。 [実際の予想結果で更新されました]。誰かが両方(または簡単な相互変換)、多くの特別な感謝、そして科学を教えるように感じている場合は、また感謝しています。
result1 = pd.DataFrame({'1': ['gene1','gene1','gene1','gene1'],
'2': ['gene2','gene4','gene2','gene3'],
'3': ['gene4','gene7','gene3','gene4'],
'4': ['gene6','gene9','gene4','gene6'],
'5': ['gene7','gene10','gene5','gene7'],
'6': ['gene8','NaN','gene6','gene8'],
'7': ['gene9','NaN','gene7','gene9'],
'8': ['gene10','NaN','gene8','gene10'],
'9': ['NaN','NaN','gene9','NaN'],
},
index = ['W','X','Y','Z'])
print(result1)
1 2 3 4 5 6 7 8 9
W gene1 gene2 gene4 gene6 gene7 gene8 gene9 gene10 NaN
X gene1 gene4 gene7 gene9 gene10 NaN NaN NaN NaN
Y gene1 gene2 gene3 gene4 gene5 gene6 gene7 gene8 gene9
Z gene1 gene3 gene4 gene6 gene7 gene8 gene9 gene10 NaN
この長い質問を読んでいただき、ありがとうございます。
?あなたは一連の疑問符とランダムなデータを提供します。これらの例を作成する際に問題が発生した場合(最初の質問には非常に便利です)、残りの部分を行ってデータフレームを作成してくださいあなたは欲しい。 –
あなたは正しいです、謝罪します。疑問符の配列を追加するのは難しくありませんでした。作成したばかりのものを4回コピーしました。私はおもちゃの例を解決し、期待される結果のデータフレームを編集します。 – JRCX