2017-01-13 7 views
1

他の参照ファイルを使用して行値を.csvファイルにマップしようとしています。元.CSVは次のようになります。辞書で空のキー/値が生成される

PROBE,8988,8981,8878,8983 
1371844,0.011,-0.018,-0.032,-0.034 
1386013,0.034,0.225,-0.402,0.418 
1390154,0.145,-0.108,-0.421,-0.048 
1393851,-0.146,-0.026,-0.101,-0.011 

私は辞書がこのように見えるようにするための基準.CSV:

PROBE, Title, Gene 
1390154, Cellular, Becn1 
1371844, Liver, Vcp 
1393851, Kidney, Lypla2 
1386013, Heart, Ube2d2 

理想的には、私はこれを達成することができます

PROBE 8988 8981 8878 8983 
Vcp 0.011 -0.018 -0.032 -0.034 
Ube2d2 0.034 0.225 -0.402 0.418 
Becn1 0.145 -0.108 -0.421 -0.048 
Lypla2 -0.146 -0.026 -0.101 -0.01 

これは私が試したものです:

"ValueError:重複するキーと値では置き換えできません"がスローされます。値セット:

{'': '', ' ': '', '1390154': 'Becn1', '1386013': 'Ube2d2', 'Probe ': 'Gene', '1371844': 'Vcp', '1393851': 'Lypla2'} 

それは2つの空のキーと私の辞書を前に付加します:これはなぜ私はdictの印刷する場合、私が得るため

はしかし、私は、知っています。これらを手動で削除すると、df.replace({"PROBE":dict})が正常に動作し、すべて正常です。

私の質問はです。このスクリプトを変更して手動で前置鍵を削除する必要はありません。これを全体的に行うには良い方法がありますか?

私は喜んでそれを所有しますもしそうであれば、このばかな質問私は、Pythonので明確に新たなんだ:P


PSを:私は別の参照を使用して、また列をマップしたい場合.CSV

上記のコードの「行」を「col」に置き換えることはできますか?私はそれを試してみましたが、新しい値がマップされていない元のファイルを吐き出すだけです....

私は皆助けてくれてありがとう!

+2

私はmagicalyあなたdictionnaryでこれらの「空」のキーを置くことができ、あなたのコード内で何も見えないので、私の推測では、あなたがこのために責任があるあなたのcsvファイルでいくつかの空行を持っているかもしれないということです。 空行がどこにあるかを見つけるために、行ごとに 'print'行[0]と行[2]をお勧めします。 – jadsq

答えて

0
import pandas as pd 
    If i understood you correctly you want to achieve something like this from the two sets you have: 

     8988 8981 8878 8983 
PROBE        
Vcp  0.011 -0.018 -0.032 -0.034 
Ube2d2 0.034 0.225 -0.402 0.418 
Becn1 0.145 -0.108 -0.421 -0.048 
Lypla2 -0.146 -0.026 -0.101 -0.011 

pandas merge() function can help you achieve what you want: 

df1 = pd.read_csv('{path_to_original}/org.csv') 
df2 = pd.read_csv('{path_to_reference}/reference.csv', delimiter=', ', engine='python') 
df3 = df1.merge(df2) 
df4 = df3.set_index('Gene').drop(['PROBE', 'Title'], axis=1) 
df4.index.name = 'PROBE' 
print(df4) 

If you take a look at your reference file that has space after delimiter comma i.e why it is mentioned as delimiter ', ' while reading the csv. 
+0

これは、インデックスのマッピングに最適です。私は 'merge'の使用については考えていませんでした。 – TroyPGoff

関連する問題