Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 清除数据帧中的多个JSON_Python_Json_Pandas - Fatal编程技术网

Python 清除数据帧中的多个JSON

Python 清除数据帧中的多个JSON,python,json,pandas,Python,Json,Pandas,我创建了一个数据框架,如下所示,其中包含JSON格式的国家: df = pd.DataFrame([['matt', '''[{"c_id": "cn", "c_name": "China"}, {"c_id": "au", "c_name": "Australia"}]'''], ['david', '''[{"c_id": "jp", "c_name": "Japan"}, {"c_id": "cn", "c_name": "China"},{"c_id

我创建了一个数据框架,如下所示,其中包含JSON格式的国家:

df = pd.DataFrame([['matt', '''[{"c_id": "cn", "c_name": "China"}, {"c_id": "au", "c_name": "Australia"}]'''],
                   ['david', '''[{"c_id": "jp", "c_name": "Japan"}, {"c_id": "cn", "c_name": "China"},{"c_id": "au", "c_name": "Australia"}]'''],
                   ['john', '''[{"c_id": "br", "c_name": "Brazil"}, {"c_id": "ag", "c_name": "Argentina"}]''']],
                  columns =['person','countries']) 
我希望输出如下,仅包含国家名称,用逗号分隔,并按字母顺序排序:

result = pd.DataFrame([['matt', 'Australia, China'],
                   ['david', 'Australia, China, Japan'],
                   ['john', 'Argentina, Brazil']],
                  columns =['person','countries']) 
我尝试了几种方法,但都没有成功。我希望下面的代码能够适当地拆分JSON格式,但没有成功——也许是因为JSON在数据帧中是字符串格式的

result = pd.io.json.json_normalize(df, 'c_name')

一种解决方案是使用
ast.literal\u eval
将字符串视为字典列表:

导入ast
df[“国家”]=df[“国家”].map(lambda x:ast.literal_eval(x))
df[“countries”]=df[“countries”].map(lambda x:sorted([c[“c_name”]表示x中的c]))

它不是有效的JSON-ie,没有
围绕
c\u id
键值…
cn
au
等,因此它不会parse@ChrisA抱歉,这是我的错误,我编辑了它。也许可以尝试
df['countries']=[','。在df['countries']中加入([d.get('c_name')表示l中的d])。应用(json.load)]
@ChrisA似乎适用于此示例,但在我的真实数据集中,我得到了
JSONDecodeError:期望值:第1行第3102列(char 3101)
再次,必须是无效的JSON-您有一个
“键”:
在第3102列的某处没有关联的
“值”