如何从指定JSON生成的DataFrame单元格提取_ym_uid数值?
提取DataFrame单元格中的_ym_uid数值
给定如下创建DataFrame的代码:
import pandas as pd json = {'contexts_ru_andata_master_cookies_1': {0: [{'_ym_uid': '1664978572350562652'}], 1: [{'_ym_uid': '1664978577951178500'}], 2: [{'_ym_uid': '1631015476823239589'}], 3: [{'_ym_uid': '1664945479855475653'}], 4: [{'_ym_uid': '1663327749550707020'}], 6: [{'_ym_uid': '1664978547593809275'}], 7: [{'_ym_uid': '16649783691007078342'}], 8: [{'_ym_uid': '1662551949642530804'}]}} df = pd.DataFrame.from_dict(json)
每个单元格包含一个仅含单个字典的列表,字典的_ym_uid键对应目标数值。以下是两种高效提取方法:
方法1:使用apply结合lambda函数
通过lambda函数直接访问列表的第一个元素(字典),再提取_ym_uid的值:
# 提取为新列 df['_ym_uid'] = df['contexts_ru_andata_master_cookies_1'].apply(lambda x: x[0]['_ym_uid']) # 或者替换原列 df['contexts_ru_andata_master_cookies_1'] = df['contexts_ru_andata_master_cookies_1'].apply(lambda x: x[0]['_ym_uid'])
方法2:使用Pandas字符串访问器str
利用str访问器简化列表和字典的索引操作:
# 提取为新列 df['_ym_uid'] = df['contexts_ru_andata_master_cookies_1'].str[0].str['_ym_uid'] # 替换原列 df['contexts_ru_andata_master_cookies_1'] = df['contexts_ru_andata_master_cookies_1'].str[0].str['_ym_uid']
可选:转换为整数类型
如果需要将提取的字符串数值转为整数:
df['_ym_uid'] = df['_ym_uid'].astype(int)
执行上述操作后,DataFrame会包含提取出的_ym_uid数值,方便后续分析或处理。
内容的提问来源于stack exchange,提问作者alex smolyakov
相关产品推荐
相关产品推荐

