2017-05-24 6 views
0

、私はこのようになります。データフレーム取得しています:分割データフレーム、いくつかの操作の結果、Pythonの

   0         1 
0  (aut, aut)       (1.0, 0.0) 
1  (isr, pcn) (0.0621031946211, 0.0840317734128) 
2  (wlf, gum) (0.00971778368827, 0.787082275372) 
3  (lka, are) (0.184325574632, 2.37291167033e-07) 
4  (mmr, brb) (-0.00659784629805, 0.854498462056) 
5  (umi, mar) (0.136002437743, 0.000146047773528) 
6  (rwa, arm) (0.143873473167, 5.82638804266e-05) 

をしかし、私はこのようなもので、このデータフレームを分割する必要があります。

 iso_a iso_b  value_1    value_2 
0  aut aut  1.0     0.0 
1  isr pcn 0.062103194621  0.0840317734128 
2  wlf gum 0.009717783688  0.787082275372 
3  lka are 0.184325574632  2.37291167033e-07 
4  mmr brb -0.006597846298  0.854498462056 
5  umi mar 0.136002437743  0.000146047773528 
6  rwa arm 0.143873473167  5.82638804266e-05 
+0

まだ試しましたか? – Gabriel

+0

DataFrameタプルの要素(見た目)やタプルの文字列表現(それも可能でしょう)はありますか? – DSM

+0

申し訳ありません、元のデータは次のような辞書です:{( 'aut'、 'aut'):(1.0,0.0)、( 'isr'、 'pcn'):(0.06210319462108603,0.084031773412780841)、( 'wlf' ( '㎜'、 'brb'):(-0.0065978462980470038,0.8544984620563465)、( 'um')、( 'um'、 'brb'):(0.0097177836882651521,0.78708227537249009)、( 'lka'、 'are'):(0.18432557463221144,2.3729116703293611e-07) '、' mar '):(0.13600243774288176、0.00014604777352783356)、(' rwa '、' arm '):(0.14387347316681087、5.826388042658121e-05)、.... – PAstudilloE

答えて

1

I可能性があります:

def x(col): 
    return col[0] 

df['ios_a'] = df[0].apply(x) 
df['value_1'] = df[1].apply(x) 


def y(col): 
    return col[1] 

df['ios_b'] = df[0].apply(y) 
df['value_2'] = df[1].apply(y) 

そして、あなたはあなたの最初の2つの列を削除することができますならば好き。

これは少し不器用です(DRYではありません)が、仕事をします。 def x():は、列(df[0]またはdf[1]のいずれかの列)をとり、各行のタプルの最初の部分を新しい割り当て列に入れます(df['iso_a']など) def y():は同じですが、今回は各タプル。それは理にかなっていますか?また、これはあなたがPandasデータフレームを使用していることを前提としています。

1

あなたは、入力データの読み取りを必要とするどのような形式に非常に(なし)詳細は、こちらを初歩的な単純な方法だん与えるので:

ls = [] 
with open('del.txt', 'r') as f: 
    for line in f: 
     ls.append(line.replace('(', '').replace(')', '').replace(',', '').split()) 


for l in ls[1:]: 
    print(l) 

すべての要素が文字列として格納されているとこれは、すべての行のサブリストのリストを返す:

['0', 'aut', 'aut', '1.0', '0.0'] 
['1', 'isr', 'pcn', '0.0621031946211', '0.0840317734128'] 
['2', 'wlf', 'gum', '0.00971778368827', '0.787082275372'] 
['3', 'lka', 'are', '0.184325574632', '2.37291167033e-07'] 
['4', 'mmr', 'brb', '-0.00659784629805', '0.854498462056'] 
['5', 'umi', 'mar', '0.136002437743', '0.000146047773528'] 
['6', 'rwa', 'arm', '0.143873473167', '5.82638804266e-05'] 

ここ

ls = [] 
with open('del.txt', 'r') as f: 
    for line in f: 
     ls.append(line.translate(None, "(),").split()) 
+0

申し訳ありません、これまでの回答は忘れていました: 私は、最初のデータフレームを何らかの操作の結果として得る: for data2.columns: for data2.columns: d [x、y] = pearsonr(data2 [x]、data2 [y]) 結果はlooの辞書ですksのように:{( 'aut'、 'aut'):(1.0、0.0)、( 'isr'、 'pcn'):(0.06210319462108603,0.084031773412780841)、( 'wlf'、 'gum'):(0.0097177836882651521、 0.78708227537249009)、( 'lka'、 'are'):(0.18432557463221144,2.3729116703293611e-07)。 最後に必要なのは、元の質問の結果としてのデータフレームです。 – PAstudilloE

0

同じ結果を生成translate方法を用いて別の方法ですこれが入力ファイルか多次元配列かどうかはわかりません。 入力データフレームが多次元配列で、各要素に2つの要素を持つ別の配列があるとします。私が言ったように

def getListOfDictionaries(dataFrame): 
    newList = list() 
    for row in dataFrame: 
    newList.append({'iso_a': row[0][0], 
        'iso_b': row[0][1], 
        'value_1': row[1][0], 
        'value_2': row[1][1]}) 
    return newList 

、私はどのような形式で、我々は、入力データを期待することができます知っていない

関連する問題