Python中文
首页
教程
问答
标签
搜索
登录
注册
仅获取字典中嵌套列表的一个值,以创建数据帧更新#1
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我正在使用一个API,它返回一个包含嵌套列表的字典,让我们将其命名为<code>coins_best</code>。结果如下所示:</p> <pre><code>{'bitcoin': [[1603782192402, 13089.646908288987], [1603865643028, 13712.070136258053]], 'ethereum': [[1603782053064, 393.6741989091851], [1603865024078, 404.86117057956386]]} </code></pre> <p>列表中的第一个值是时间戳,而第二个值是美元价格。我想创建一个带有价格和时间戳作为索引的数据框。我尝试使用此代码只需一步:</p> <pre><code>d = pd.DataFrame() for id, obj in coins_best.items(): for i in range(0,len(obj)): temp = pd.DataFrame({ obj[i][1] } ) d = pd.concat([d, temp]) d </code></pre> <p>这次尝试给了我一个只有一列的数据帧,而不是所需的两列,因为当我尝试使用<code>columns</code>时,使用<code>columns</code>参数会抛出错误(TypeError:Index(…)必须用某种集合调用,'bitcoin'被传递)</p> <p>然后我试着用理解来预处理字典和它们的列表:</p> <pre><code>for k in coins_best.keys(): inner_lists = (coins_best[k] for inner_dict in coins_best.values()) items = (item[1] for ls in inner_lists for item in ls) </code></pre> <p>我在字典里找不到这两个元素,只有最后一个</p> <p>我知道可以尝试:</p> <pre><code>df = pd.DataFrame(coins_best, columns=coins_best.keys()) </code></pre> <p>这给了我:</p> <pre><code> bitcoin ethereum 0 [1603782192402, 13089.646908288987] [1603782053064, 393.6741989091851] 1 [1603785693143, 13146.275972229188] [1603785731599, 394.6174435303511] </code></pre> <p>然后尝试删除每行列表中的第一个元素,但对我来说更难。所需的答案是:</p> <pre><code> bitcoin ethereum 1603782192402 13089.646908288987 393.6741989091851 1603785693143 13146.275972229188 394.6174435303511 </code></pre> <p>您知道如何在创建数据帧之前处理字典以获得此结果吗</p> <p>这是我的第一个问题,我尽量说清楚。多谢各位</p> <p>更新#1</p> <p>{a1}的答案也解决了时间戳的问题,并且对它的用途很有用。但是,示例代码虽然正确(因为它使用了提供的信息),但仅限于这两个键。这是解决字典中每个键问题的最终代码</p> <pre><code>for k in coins_best: df_coins1 = pd.DataFrame(data=coins_best[k], columns=['timestamp', k]) df_coins1['timestamp'] = pd.to_datetime(df_coins1['timestamp'], unit='ms') df_coins = pd.concat([df_coins1, df_coins], sort=False) df_coins_resampled = df_coins.set_index('timestamp').resample('d').mean() </code></pre> <p>非常感谢你的回答</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>有不同的时间戳,因此正确的输出看起来与您提供的不同,但除此之外,它是一个单行线(其中d是您的输入字典):</p> <pre><code>pd.concat([pd.DataFrame(val, columns=['timestamp', key]).set_index('timestamp') for key, val in d.items()], axis=1) </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
使用urllib2进行Web抓取
7 回答
使用urllib2进行Web报废
7 回答
使用urllib2进行简单https身份验证时出现问题(用于获取PayPal OAUTH承载令牌)
6 回答
使用urllib2进行节流
1 回答
使用urllib2远程读取pdf
2 回答
使用urllib2通过flask发送图像
3 回答
使用urllib2通过对等错误重置连接
2 回答
使用urllib2避免503个错误
8 回答
使用urllib2音调符号打开页面
10 回答
使用urllib3 UnicodeDecodeError上载文件
3 回答
使用urllib3.PoolManag时看到ClosedPoolError
10 回答
使用urllib3下载文件的最佳方式是什么
9 回答
使用urllib3下载网页
1 回答
使用urllib3忽略证书验证
9 回答
使用urllib3时的ssl.SSLError
8 回答
使用urllib3的TLS1.1的HTTP GET网站
2 回答
使用urllib3获取JSON d
7 回答
使用urllib3解析来自httpget请求的XML响应
1 回答
使用urllib3进行HTTPS调用时,请使用服务器的ssl证书而不是根CA证书
10 回答
使用urllib3进行多部分表单编码和发布
6 回答