python - 如何将字典转换为具有列中所有键的数据框
问题描述
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
我有这个函数,它创建一个 key_ids 字典并将它们映射到长度为 200 的值的关联列表。例如,我的字典看起来像saved = {key_id_1: [1,2,3...200], key_id_2: [1,2,...,200], ....}
我想把这个字典变成一个数据框,其中有一列 key_ids 和每个元素在关联列表中的 200 成为它自己的列。所以总共有 201 列,其中第一列是第一个 key_id,然后第二列是列表的第一个元素,第三列是列表的第二个元素,依此类推。然后第二行第一列是第二个key_id,然后第二行第二列是key_id的第二个列表的第一个元素,依此类推。有没有办法将此字典转换为df?我有 10000 个 key_id,尺寸为 10000x201。谢谢!
解决方案
- 使用with参数将其加载
dict
到 DataFrame 中,并使用pandas.DataFrame.from_dict
orient
.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
替代实施
- 用 创建 DataFrame,用
pandas.DataFrame
转置 DataFramepandas.DataFrame.T
,然后用 重置.reset_index()
。
df = pd.DataFrame(saved)
df = df.T.reset_index()
推荐阅读
- r - 将数据框从分类变量重塑为仅二进制变量
- python - 无法在 Windows 10 中安装 pyAudio(需要 Microsoft Visual c++ 14.0)错误
- python - 在 Visual Studio Code 中运行 Node.js,调用 python 脚本作为子进程并对其进行调试
- html - 正在添加颜色:#333333;到正文标签更改所有文本元素的默认颜色的正确方法?
- c# - 在 ASP.NET MVC 中更改 Doc、Docx 文件
- git - 将功能分支推送到远程存储库以与不同步的 master 合并
- python-3.x - hackerrank 生日蛋糕(我差点搞定,但出了点问题)
- ruby-on-rails - 错误:“不兼容的字符编码:ASCII-8BIT 和 UTF-8”和“UTF-8 中的无效字节序列”在 SQL Server 2008 R2 中创建记录 RoR 时
- php - 如何使用 PHPMailer 将多个文件附加到两个不同的电子邮件?
- html - Magento 2 - 更改核心代码 css/html 未反映在前端