2017-08-28 15 views
1

.jsonファイルからインポートしたデータセットの機能を追加する必要があります。パンダデータフレームからの辞書値の抽出

これは、それは次のようになります。本質的には

f1 = pd.read_json('https://raw.githubusercontent.com/ansymo/msr2013-bug_dataset/master/data/v02/eclipse/short_desc.json') 

print(f1.head()) 


               short_desc 
1  [{'when': 1002742486, 'what': 'Usability issue... 
10  [{'when': 1002742495, 'what': 'API - VCM event... 
100  [{'when': 1002742586, 'what': 'Would like a wa... 
10000 [{'when': 1014113227, 'what': 'getter/setter c... 
100001 [{'when': 1118743999, 'what': 'Create Help Ind... 

、私は列名として「SHORT_DESC」を取り、直接その下に文字列値を移入する必要があります:「ユーザビリティの問題...

はこれまでのところ、私は次のことを試してみた:

f1['desc'] = pd.DataFrame([x for x in f1['short_desc']]) 

Wrong number of items passed 19, placement implies 1 

は、ループを使用せずにこれを達成する簡単な方法はありますか?誰かがこの初心者を正しい方向に向けることができますか?

答えて

3

データフレームを初期化して列に割り当てようとしません。列はpd.Seriesを意味します。

あなたはこのように、直接、リストの内包を割り当てる必要があります。別の方法として

f1['desc'] = [x[0]['what'] for x in f1['short_desc']] 

、私はoperatorpd.Series.applyを使用して、任意のラムダ関数を伴わない解決策を提案します:

import operator 

f1['desc'] = f1.short_desc.apply(operator.itemgetter(0))\ 
          .apply(operator.itemgetter('what')) 
print(f1.desc.head()) 

1   Usability issue with external editors (1GE6IRL) 
10     API - VCM event notification (1G8G6RR) 
100  Would like a way to take a write lock on a tea... 
10000  getter/setter code generation drops "F" in "..... 
100001 Create Help Index Fails with seemingly incorre... 
Name: desc, dtype: object 
+0

これは、私が1、10、100などを取得している理由、そして「short_desc」と列ヘッダーがないということです。 – JohnWayne360

+0

@ JohnWayne360あなたはシリーズをプリントアウトしているので。 'print(df.head())'を試してください。あなたはそれを得るでしょう。 –

+0

@ JohnWayne360興味深いことに、Webリンクからロードするとインデックスが来るようです。それをリセットしたいですか? 'f1 = f1.reset_index(drop = 1)'を実行してください。 –

2

またはapplyを試すことができます(PS:applyは時間費用として考える)

f1['short_desc'].apply(pd.Series)[0].apply(pd.Series) 

Out[864]: 
                what  when who 
1   Usability issue with external editors (1GE6IRL) 1002742486 21 
10     API - VCM event notification (1G8G6RR) 1002742495 10 
100  Would like a way to take a write lock on a tea... 1002742586 24 
10000 getter/setter code generation drops "F" in "..... 1014113227 331 
100001 Create Help Index Fails with seemingly incorre... 1118743999 9571 
+1

ありがとう、この答えは私が「いつ」と「何か」を後で一致させようとするときに役立ちます。とても有難い! – JohnWayne360

+0

@ JohnWayne360ようこそ – Wen

関連する問題