python-3.x - 如何检查数据框是否包含列表或字典
问题描述
我有一个数据框:
col1 col2 col3 col4
A 11 [{'id':2}] {"price": 0.0}
B 21 [{'id':3}] {"price": 2.0}
C 31 [{'id':4}] {"price": 3.0}
我想找出所有列的数据类型为“列表”和“字典”,并可能将结果存储到另一个列表中。我该怎么做?
当我使用这个时:
data.applymap(type).apply(pd.value_counts)
输出是:
col1 col2 col3 col4
0 a 11 [{'id':2}] {"price": 0.0}
1 b 21 [{'id':3}] {"price": 2.0}
2 c 31 [{'id':4}] {"price": 3.0}
解决方案
国际大学联合会,
我们可以使用ast 标准库中的apply
andliteral_eval
来构建字典:
出于性能原因,让我们使用数据帧的第一行,因为apply
计算量很大。
from ast import literal_eval
data_dict = {}
for col in df.columns:
try:
col_type = df[col].iloc[:1].apply(literal_eval).apply(type)[0]
data_dict[col] = col_type
except (ValueError,SyntaxError):
data_dict[col] = 'unable to evaluate'
print(data_dict)
{'col1': 'unable to evaluate',
'col2': 'unable to evaluate',
'col3': list,
'col4': dict}
推荐阅读
- r - 将列添加到多个 Excel 文件并使用循环将其导出
- standards - 斯库力自动化测试环境
- c++ - 线程池中大量磁盘访问期间的(无响应)消息
- python - 在 Keras 中训练变分自动编码器引发“SymbolicException:急切执行函数的输入不能是 Keras 符号张量”
- regex - sed 用新字符串替换捕获组
- spring-boot - Thymeleaf 布局片段在 Spring Webflux 中不起作用
- python - 使用片麻岩的 ols 玩具示例中的“矩阵未对齐”错误
- css - 搜索下拉列表样式
- asp.net - 使用 vb.net 在 asp.net 中插入语句错误
- jenkins - 参数化 Jenkins 管道属性:不能在属性部分使用参数