我有一个列,其中的值保存为字典,我使用下面的代码将值分解为两个单独的列,但是,我正在努力处理具有空值的行(请参见下面的错误消息):df
product_id product_ratings
2323 {"average_rating": 4.2, "number_of_ratings": 10}
4433 {"average_rating": 4.3, "number_of_ratings": 31}
3454 {"average_rating": 4.5, "number_of_ratings": 23}
4552 {"average_rating": 4.1, "number_of_ratings": 13}
3422 None
desired_output_df
product_id average_rating number_of_ratings
2323 4.2 10
4433 4.3 31
3454 4.5 23
4552 4.1 13
3422 0 0
我的代码:
import ast
import pandas as pd
df = pd.read_csv('path')
df = df.fillna(0)
dict_df = pd.DataFrame([ast.literal_eval(i) for i in df.product_ratings.values])
df2 = df.drop('product_ratings',axis=1)
final_df = pd.concat([df2,dict_df],axis=1)
final_df
但是,我收到以下错误:ValueError:节点或字符串格式错误:0
让我们试试:
df = pd.read_csv('path')
dict_df = pd.DataFrame([ast.literal_eval(i) if i !='None' or i is not None else
dict()
for i in df.product_ratings.values]
).fillna(0)
final_df = df.drop('product_ratings', axis=1).join(dict_df)
输出:
product_id average_rating number_of_ratings
0 2323 4.2 10.0
1 4433 4.3 31.0
2 3454 4.5 23.0
3 4552 4.1 13.0
4 3422 0.0 0.0
尝试转换为dictionary,否则返回带有默认值的dictionary:
def try_literal_eval(e):
try:
return ast.literal_eval(e)
except ValueError:
return {'average_rating': 0, 'number_of_ratings': 0}
res = pd.DataFrame(df['product_ratings'].apply(try_literal_eval).tolist())
output = pd.concat((df.drop('product_ratings', 1), res), axis=1)
print(output)
输出
product_id average_rating number_of_ratings
0 2323 4.2 10
1 4433 4.3 31
2 3454 4.5 23
3 4552 4.1 13
4 3422 0.0 0
问题内容: 使用uCanaccess检索保存在桌面中的数据库时出现错误。 我的代码如下: 导入java.util.Scanner; 导入java.sql。*; 公共类dbTest1 { } 我将很乐意为您解决此错误提供任何建议。 谢谢,文斯 问题答案: 好吧,首先,导入您的库(lib文件夹中的jar文件)。http://sourceforge.net/projects/ucanaccess/fil
有人能告诉我这个: 在第二行,我得到一个错误。但这行得通: 我需要更多的文字后,我打印的名称。有人知道怎么做吗?
问题内容: 众所周知,使用存在潜在的安全风险,因此提倡使用 但是在python 2.7中,运行此示例时会返回: 而在python 3.3中,此示例按预期工作: 为什么它在python 3而不是python 2上运行?如何在不使用高风险函数的情况下在python 2.7中进行修复? 问题答案: 这在Python 2上不起作用的原因在于它的实现。当righth操作数为复数时,原始实现只对加法和减法执行
问题内容: 我已经使用熊猫成功读取了一个csv文件。当我尝试从数据框中打印特定列时,出现键盘错误。因此,我与错误共享代码。 ** 有人可以帮我吗? 问题答案: 我认为首先最好调查一下,什么是真实的列名,如果转换成更好的列表会看到一些空格或类似的东西: print (reviews_new.columns.tolist()) 我认为可能有2个问题(显然): 1.列名中的空格(也可能在数据中) 解决方
问题内容: 我收到以下错误: 第一个字段是格式。 有任何想法吗? 谢谢。 问题答案: 当您将字符串值插入日期列时,则需要在使用函数期间将其转换为日期。使用此功能时,您将提供字符串的格式。 功能格式: 因此,您的查询将如下所示: 参见带有演示的SQL Fiddle
我用Apache POI用字符串公式创建Excel文件,得到#VALUE!结果文件中有错误。 源代码是 (printCellInfo是我下面讲的Info方法)而错误单元格是B1。Excel显示“单元格中使用的值的数据类型不正确”。但是如果打开这个单元格进行编辑(使用F2)并按回车键-公式计算正确!!! 现在关于手机信息。帮助方法是 主执行的输出为 所以B0一开始是空白,公式插入后是数字。为什么PO