簡體   English   中英

如何將字典變成一個列中所有鍵的 dataframe

[英]How to turn a dictionary into a dataframe with all the keys in a column

def weights():
    saved = {}
    for i in range(len(bread_pairs["key_id"])):
        drawing = np.array(bread_pairs['bitmap'][i], dtype=np.uint8)
        new_test_cnn = drawing.reshape(1, 28, 28, 1).astype('float32')
        new_cnn_predict = model.predict(new_test_cnn, batch_size=32, verbose=0)
        w = model.layers[8].get_weights()
        w = list(w[0].flatten())
        saved[bread_pairs["key_id"][i]] = w
    return saved

我有這個 function,它正在創建一個 key_id 字典並將它們映射到一個長度為 200 的關聯值列表。因此,例如我的字典看起來像saved = {key_id_1: [1,2,3...200], key_id_2: [1,2,...,200], ....}我想把這本字典變成一個 dataframe 的一列 key_ids 並且關聯列表中的每個元素 200 成為它自己的列。 所以總共有 201 列,其中第一列是第一個 key_id,然后第二列是列表的第一個元素,第三列是列表的第二個元素等等。然后第二行第一列是第二個 key_id 然后第二行第二列是 key_id 的第二個列表的第一個元素,依此類推。 有沒有辦法將這本字典轉換為 df? 我有 10000 個 key_id,尺寸為 10000x201。 謝謝!

  • 使用帶有orient參數的 pandas.DataFrame.from_dict 將dict加載到 DataFrame 中,並使用pandas.DataFrame.from_dict .reset_index()重置索引
    • 這將根據要求創建 DataFrame,但是,我建議將鍵保留為索引,這樣可以更輕松地執行計算和處理特定行。
  • 如果列應命名為0...201 ,則使用df.columns = list(range(202)) ,或使用pandas.DataFrame.rename重命名特定列。
import pandas as pd

# test data
saved = {'key_id_1': list(range(201)), 'key_id_2': list(range(201))}

# create the DataFrame
df = pd.DataFrame.from_dict(saved, orient='index')

# reset the index
df = df.reset_index()

# display(df)
      index  0  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99  100  101  102  103  104  105  106  107  108  109  110  111  112  113  114  115  116  117  118  119  120  121  122  123  124  125  126  127  128  129  130  131  132  133  134  135  136  137  138  139  140  141  142  143  144  145  146  147  148  149  150  151  152  153  154  155  156  157  158  159  160  161  162  163  164  165  166  167  168  169  170  171  172  173  174  175  176  177  178  179  180  181  182  183  184  185  186  187  188  189  190  191  192  193  194  195  196  197  198  199  200
0  key_id_1  0  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99  100  101  102  103  104  105  106  107  108  109  110  111  112  113  114  115  116  117  118  119  120  121  122  123  124  125  126  127  128  129  130  131  132  133  134  135  136  137  138  139  140  141  142  143  144  145  146  147  148  149  150  151  152  153  154  155  156  157  158  159  160  161  162  163  164  165  166  167  168  169  170  171  172  173  174  175  176  177  178  179  180  181  182  183  184  185  186  187  188  189  190  191  192  193  194  195  196  197  198  199  200
1  key_id_2  0  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99  100  101  102  103  104  105  106  107  108  109  110  111  112  113  114  115  116  117  118  119  120  121  122  123  124  125  126  127  128  129  130  131  132  133  134  135  136  137  138  139  140  141  142  143  144  145  146  147  148  149  150  151  152  153  154  155  156  157  158  159  160  161  162  163  164  165  166  167  168  169  170  171  172  173  174  175  176  177  178  179  180  181  182  183  184  185  186  187  188  189  190  191  192  193  194  195  196  197  198  199  200

替代實施

  • 用 pandas.DataFrame 創建 DataFrame,用pandas.DataFrame轉置pandas.DataFrame.T ,然后用.reset_index()重置。
df = pd.DataFrame(saved)
df = df.T.reset_index()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM