Pandas .iloc[]切片索引失效?嵌套结构DataFrame转换求助
解决DataFrame单元格提取text值的问题
问题分析
你的DataFrame每个单元格都是长度为1的列表,列表内包含一个带text键的字典,需要将所有单元格直接转换为字典中text对应的值,同时适配行列数不固定的场景。
通用处理方法
不需要复杂的循环和pd.concat,用pandas内置的高效方法即可实现:
方法1:applymap全局遍历单元格
applymap会对DataFrame的每个单元格执行指定函数,完美适配任意行列数:
import pandas as pd # 示例构造你的原始DataFrame data = { 'Name': [[{'text': 'Server1.com'}], [{'text': 'Server2.com'}]], 'Count': [[{'text': '100'}], [{'text': '200'}]] } df = pd.DataFrame(data) # 提取所有单元格的text值 df_clean = df.applymap(lambda cell: cell[0]['text'])
方法2:按列用str方法处理
利用Series的str属性依次解析列表和字典,同样通用:
df_clean = df.copy() for col in df_clean.columns: # 先取出列表中的字典,再提取text值 df_clean[col] = df_clean[col].str[0].str['text']
关于你遇到的报错解释
你单独执行df[0].iloc[0][0]['text']能成功,是因为你直接定位到了单个单元格的列表元素;但用iloc[0:]切片后得到的是Series/DataFrame对象,不能直接用['text']访问——你需要先对切片里的每个单元格单独提取列表中的字典,再取text值,而不是直接对切片对象用字典键访问。
内容的提问来源于stack exchange,提问作者dig_123
相关产品推荐
相关产品推荐

