python - 遍历字典并向熊猫数据框添加值
问题描述
我刚刚了解了熊猫数据框。我有一个嵌套字典,其中包含我在 for 循环中提取的值。将此数据转换为数据框的最佳方法是什么?
if result != None:
for ads in result['data']['ad_list']:
#print getOnlineProvider(currency)
if(ads['data']['online_provider'] in onlineprovider):
#"NATIONAL_BANK") or
#(ads['data']['online_provider'] =="SPECIFIC_BANK") or
#(ads['data']['online_provider'] =="ALTCOIN_DASH") or
#(ads['data']['online_provider'] =="CASH_DEPOSIT")):
trader = ads['data']['profile']['name']
adusdprice = ads['data']['temp_price_usd']
delta = float(adusdprice) - float(btcprice)
deltapercent = (1 - (float(btcprice)/float(adusdprice))) * 100
adid = ads['data']['ad_id']
maxamount = ads['data']['max_amount']
minamount = ads['data']['min_amount']
paywindow = ads['data']['payment_window_minutes']
print("Trader:" + trader + "||" + "Ad ID:" + str(adid) + "||"+ "paymethod: " + ads['data']['online_provider'] + "||" + "USD price: " + adusdprice + "||"+ "min-max: " + str(minamount) + "-" + str(maxamount) +"||" + "PayWindow: " + str(paywindow) + "||" + "Price delta: " + str(delta) + "||"+ "Pct Delta: " + str(deltapercent) + "%")
print("=====================================================")
我试过用 dict 创建一个数据框
pd.DataFrame.from_dict(result['data']['ad_list']['data'])
但这不起作用,据我所知,我需要逐行执行,因为我提取每个值以正确获取它..
这是我使用上述命令获得的数据帧的结果。
{u'public_view': u'https://localbitcoins.com/a... {u'require_feedback_score': 0, u'hidden_by_ope...
{u'public_view': u'https://localbitcoins.com/a... {u'require_feedback_score': 0, u'hidden_by_ope...
{u'public_view': u'https://localbitcoins.com/a... {u'require_feedback_score': 0, u'hidden_by_ope...
{u'public_view': u'https://localbitcoins.com/a... {u'require_feedback_score': 0, u'hidden_by_ope...
{u'public_view': u'https://localbitcoins.com/a... {u'require_feedback_score': 0, u'hidden_by_ope...
{u'public_view': u'https://localbitcoins.com/a... {u'require_feedback_score': 0, u'hidden_by_ope...
{u'public_view': u'https://localbitcoins.com/a... {u'require_feedback_score': 0, u'hidden_by_ope...
{u'public_view': u'https://localbitcoins.com/a... {u'require_feedback_score': 0, u'hidden_by_ope...
{u'public_view': u'https://localbitcoins.com/a... {u'require_feedback_score': 90, u'hidden_by_op...
{u'public_view': u'https://localbitcoins.com/a... {u'require_feedback_score': 0, u'hidden_by_ope...
{u'public_view': u'https://localbitcoins.com/a... {u'require_feedback_score': 0, u'hidden_by_ope...
{u'public_view': u'https://localbitcoins.com/a... {u'require_feedback_score': 0, u'hidden_by_ope...
{u'public_view': u'https://localbitcoins.com/a... {u'require_feedback_score': 0, u'hidden_by_ope...
{u'public_view': u'https://localbitcoins.com/a... {u'require_feedback_score': 0, u'hidden_by_ope...
虽然我希望得到类似于我在 for 循环中打印出来的 pandas 数据帧格式的东西......
交易者:mr_ahmed_btc (1000+; 99%)||广告 ID:736624||支付方式:CASH_DEPOSIT||美元价格:3866.49||最小-最大:200-9185||支付窗口:270||价格增量:260.05||Pct达美:6.72573833115%
解决方案
from_dict
没有 kwargs 期望 dicts 采用以下形式:
{"colname1": [1,2,3,4], "colname2": [2,3,4,5]}
从你的问题中很难看出它的结构是什么,result['data']['ad_list']['data']
但我最好的猜测是它类似于:
[
{
"dog": "cat",
"cat": "dog",
"bug": 234
},
{
"dog": "hot",
"cat": "tin roof",
"bug": 432
}
]
在这种情况下使用:
df = pd.DataFrame(result['data']['ad_list']['data'])
这直接从字典构造数据帧。
编辑:关于漂亮打印的问题,请查看漂亮打印熊猫数据框
数据框的简单打印只是print(df)
但我不知道这是否能解决你的问题。听起来result['data']['ad_list']['data']
可能是 JSON 字符串列表,在这种情况下,您需要执行以下操作:
导入 json 数据 = json.loads(result['data']['ad_list']['data']) df = pd.DataFrame(data)
推荐阅读
- javascript - 使用 Axios 全局处理请求超时错误并向用户显示警报的最佳方式?
- c - 在辅助函数中扫描二维数组并且 main() 仍然能够看到它
- android - 为什么我在运行 react-native 链接时收到无法读取属性“UIAppFonts of null”错误?
- javascript - 如何从同一级别的不同记录中提取多个javascript值(对象不是数组)
- objective-c - 在 Objective-C 中检索和使用 Firebase 中的值
- angular - 使用 Angular 拦截器取消所有待处理的 http 请求
- javascript - 在组件中显示数据时出现 angular6 的问题
- python - 使用 WMI python 计算正在运行的进程数很慢
- java - MobileAds.initialize(Context, String) 已弃用
- angular - 在 Angular 中,我如何使用 ngrx 订阅多个可观察对象,这些可观察对象在每次更改下拉值时都会更新