python - 将列的数据提取到变量中
问题描述
我有一个非常大的数据框,其中一列是字典本身。(假设第 12 列)。在那个字典中是一个超链接的一部分,我想得到它。
在 Jupyter 中,我想显示一个包含第 0 列和第 2 列的表格,以及完整的超链接
我想我需要:
- 从数据框中提取该字典
- 从中获取特定的键值
- 从提取的值创建完整的超链接
- 复制数据框并将列替换为上面创建的超链接
让我们只处理第 1 步,我将为接下来的步骤提出其他问题。如何将数据框中的值提取到我可以使用的变量中?
import pytd
import pandas
client = pytd.Client(apikey=widget_api_key.value, database=widget_database.value)
results = client.query(query)
dataframe = pandas.DataFrame(**results)
dataframe
# Not sure what to do next
解决方案
如果您只想从字典中提取一个键,并且该字典已作为字典存储在列中,则可以执行以下操作:
import numpy as np
import pandas as pd
# assuming, your dicts are stored in column 'data'
# and you want to store the url in column 'url'
df['url']= df['data'].map(lambda d: d.get('url', np.NaN) if hasattr(d, 'get') else np.NaN)
# from there you can do your transformation on the url column
测试数据和结果
df= pd.DataFrame({
'col1': [1, 5, 6],
'data': [{'url': 'http://foo.org', 'comment': 'not interesting'}, {'comment': 'great site about beer receipes, but forgot the url'}, np.NaN],
'json': ['{"url": "http://foo.org", "comment": "not interesting"}', '{"comment": "great site about beer receipes, but forgot the url"}', np.NaN]
}
)
# Result of the logic above:
col1 data url
0 1 {'url': 'http://foo.org', 'comment': 'not inte... http://foo.org
1 5 {'comment': 'great site about beer receipes, b... NaN
2 6 NaN NaN
如果您需要测试,如果您的数据已经存储在 python dicts(而不是字符串)中,您可以按如下方式进行:
print(df['data'].map(type))
如果您的 dicts 存储为字符串,您可以先根据以下代码将它们转换为 dicts:
import json
def get_url_from_json(document):
if pd.isnull(document):
url= np.NaN
else:
try:
_dict= json.loads(document)
url= _dict.get('url', np.NaN)
except:
url= np.NaN
return url
df['url2']= df['json'].map(get_url_from_json)
# output:
print(df[['col1', 'url', 'url2']])
col1 url url2
0 1 http://foo.org http://foo.org
1 5 NaN NaN
2 6 NaN NaN
推荐阅读
- mediawiki - 在 Mediawiki 图片库或表格中使用分页
- java - 使用大量数据提高休眠插入性能的最佳方法
- php - WooCommerce - 根据订单日期发送每月电子邮件
- copy - 如何以破坏两者之间的绑定的方式从另一个 pyomo 实例复制 pyomo 实例?
- javascript - 反转字符串的函数的时间复杂度
- excel - 无法从函数返回多个结果以便在子程序中打印它们
- android - Android DataBinding 正在泄漏内存
- java - 登录成功后向Android反馈数据
- file - 如何使用pyspark将blob字符串转换为文件
- swift - 如何在 didSelectItemAt indexPath 函数下显示 ViewController?(没有故事板)