2017-07-13 13 views
0

私はデータセンターdf1を配布センター、hq行のリストと共に持っています。インデックスとしてDC_Name、ヘッダーにHQ_lineを使用する新しいデータフレームdf2を作成しました。 df2のNaNをdf1の対応するField_Lineに置き換えたいと思います。簡単に聞こえますが、私は最良のアプローチを確信していません。ヘッダーとインデックスにデータフレームをマージする

DF1

 DC_Name HQ_Line Field_Line 
0 Albany, NY  AAC  NAC 
1 Albany, NY  AC   AC 
2 Albany, NY  ACB  ACK 
3 Albany, NY  ACC  NaN 
4 Albany, NY  ACE  ACK 

DF2

    AAC AC ACB ACC ACE ACO ACT ADO AIT AKA ... WWM 
Albany, NY  NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN 
Albuquerque, NM NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN 
Altoona, PA  NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN 
Atlanta, GA  NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN 
Birmingham, AL NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN 

答えて

4

一致していないあなたの例の出力:

df2 = { 
"Albany, NY" : { 
    "AAC" : None, # None is equiv. to your NaN 
    #etc. 
} 
} 

はその後のようなものを使用してデータセットを構築します入力。しかし、あなたのためにそれが動作するかどうかを確認するためにこれを試してください:

df.pivot(index='DC_Name',columns='HQ_Line') 
+0

これはあなたがそれを行う必要があります方法です。 'values = 'Field_Line''を明示的に追加することもできます。そうでなければ、これは私がやる方法です。 – johnchase

+0

そういうことは.head()プリントでした。このソリューションは完全に機能しました。シンプルで、私はあなたに感謝しました。 – Chris

0

私の提案は、あなたが(または単にあなたのテキストファイルを解析することができれば単にあなたのデータセットを構築するために辞書を使用して、JSONの周りにあなたのデータセットを改造することであろうPython辞書)。

擬似コードは次のようになります。

df1 = [ 
{"index" : "Albany, NY", "HQ" : "AAC", "value" : "NAC"}, 
#etc. 
] 

と何かのように:

for line in df1: 
index = line['index'] 
hq = line['hq'] 
value = line['value'] 
df2[index][hq] = value 
関連する問題