python - 动态重命名熊猫df
问题描述
我必须重命名列并提取我正在使用以下代码执行的数字:-
df.rename(columns={
0: 'latency_msecs.xmpp_login', 1: 'latency_msecs.total', 2: 'latency_msecs.message_send',
3: 'latency_msecs.admin_login', 4: 'latency_msecs.join_echo_channel',
5: 'latency_msecs.message_query',},
inplace=True)
df['latency_msecs.xmpp_login'] = df['latency_msecs.xmpp_login'].str.extract(r'(\d+.\d+)').astype('float')
df['latency_msecs.total'] = df['latency_msecs.total'].str.extract(r'(\d+.\d+)').astype('float')
df['latency_msecs.message_send'] = df['latency_msecs.message_send'].str.extract(r'(\d+.\d+)').astype('float')
df['latency_msecs.admin_login'] = df['latency_msecs.admin_login'].str.extract(r'(\d+.\d+)').astype('float')
df['latency_msecs.join_echo_channel'] = df['latency_msecs.join_echo_channel'].str.extract(r'(\d+.\d+)').astype('float')
df['latency_msecs.message_query'] = df['latency_msecs.message_query'].str.extract(r'(\d+.\d+)').astype('float')
它给了我一个干净的df:-
我如何使重命名和提取动态化,以便如果我的列值为"latency_msecs.message_query": 68858.58869552612
,我可以使列名称latency_msecs.message_query
和值be 68858.58869552612
无关紧要,如果有 5 行或 500 行。
我想放弃手动重命名和提取。
解决方案
您需要将 json 转换为 pandas 数据框。检查下面的代码:
import json
import pandas as pd
sample_row = '{"latency_msecs.total": 71815.09041786194, "latency_msecs.message_query": 68858.58869552612, "latency_msecs.join_echo_channel": 10.111570358276367, "latency_msecs.message_send": 9.004592895507812, "latency_msecs.xmpp_login": 1941.108226776123, "latency_msecs.admin_login": 17.666339874267578}'
df = pd.json_normalize(json.loads(sample_row))
print(df)
推荐阅读
- .htaccess - 我的自定义路由在 Codeigniter 3 中不起作用
- ruby-on-rails - 如何在rails关联中打印多个表格的数据?
- python - 如何将python脚本编译为可执行文件?
- spring-boot - 使用 Spring Boot 在 RabbitMQ 上不断调用 MessageListener.onMessage
- mysql - 创建学生测试的项目/Web 应用程序,在其中我们从“表单”收集输入并将它们存储在数据库中,并将进一步访问它们
- spring-integration - Spring文件集成java配置
- arrays - 循环浏览所有网页的链接并再次导航
- r - 当 id 变量在列标题中编码时将数据从宽格式转换为长格式
- android - 回调侦听器未调用 Android ViewModel
- android - Android应用中WebView+webRTC中授予权限的问题