मैं निम्नलिखित शब्दकोश को डेटाफ्रेम में बदलना चाहता हूं:

x = {'a': {'list1': [1, 2, 3, 4], 
           'list2': [5, 6, 7, 8]
          },
     'b': {'list1': [6, 7, 8, 9], 
           'list2': [4, 4, 3, 4]
          },
     'c': {'list1': [6, 45, 234, 4], 
           'list2': [213, 87, 243, 4]
          }
    }

आउटपुट डेटाफ्रेम इस तरह दिखना चाहिए:

letter   list1             list2
a        [1, 2, 3, 4]      [5, 6, 7, 8]
b        [6, 7, 8, 9]      [4, 4, 3, 4]
c        [6, 45, 234, 4]   [213, 87, 243, 4]

मैंने इन तरीकों की कोशिश की है:

import pandas as pd
pd.DataFrame(x)
                  a             b                  c
list1  [1, 2, 3, 4]  [6, 7, 8, 9]    [6, 45, 234, 4]
list2  [5, 6, 7, 8]  [4, 4, 3, 4]  [213, 87, 243, 4]

दूसरे, मैंने कोशिश की:

pd.concat({k: pd.Series(v) for k, v in x.items()}).reset_index()

  level_0 level_1                  0
0       a   list1       [1, 2, 3, 4]
1       a   list2       [5, 6, 7, 8]
2       b   list1       [6, 7, 8, 9]
3       b   list2       [4, 4, 3, 4]
4       c   list1    [6, 45, 234, 4]
5       c   list2  [213, 87, 243, 4]

दूसरा तरीका करीब है लेकिन फिर प्रत्येक "अक्षर" में 2 पंक्तियां होती हैं। मैं इसे सही तरीके से कैसे परिवर्तित करूं?

1
hydradon 7 जून 2020, 08:40

2 जवाब

सबसे बढ़िया उत्तर

आप orient तर्क का उपयोग कर सकते हैं, देखें यहां -

pd.DataFrame.from_dict(x, orient='index').rename_axis('letter').reset_index()

  letter            list1              list2
0      a     [1, 2, 3, 4]       [5, 6, 7, 8]
1      b     [6, 7, 8, 9]       [4, 4, 3, 4]
2      c  [6, 45, 234, 4]  [213, 87, 243, 4]
1
Tom Ron 7 जून 2020, 08:44