使用Python将单元格(使用JSON格式)中的数据拆分为单独的列

马蒂亚斯·德·梅特拉

当前正在使用具有包含以下信息的单元格的数据集:[JSON格式] =>列名=“ properties”。

在下面,您可以在此列中看到单个单元格的内容:

{'gender': 'Female', 'nationality': 'PHL', 'document_type': 'passport', 'date_of_expiry': '2021-05-18', 'issuing_country': 'PHL'}

文档中的所有其他单元格都是单个值(通常为true或false)

我使用以下代码将其拆分,但是由于单元中的不一致(有时缺少“性别”等...),因此效果不佳

prop = doc["properties"].str.split(",", n = 4, expand = True)

#define
gender=prop[0]
nat=prop[1]
doc=prop[2]
exp=prop[3]
iss=prop[4]

#segment
gender = gender.str.split(":", n = 1, expand = True)
nat = nat.str.split(":", n = 1, expand = True)
doc = doc.str.split(":", n = 1, expand = True)
exp = exp.str.split(":", n = 1, expand = True)
iss = iss.str.split(":", n = 1, expand = True)

#place
df['gender'] = gender[1]
df['nationality'] = nat[1]
df['documentation'] = doc[1]
df['expiry date'] = exp[1]
df['issue country'] = iss[1]

#clean
df['gender'] = df['gender'].str.replace(r' ', '')
df['nationality'] = df['nationality'].str.replace(r' ', '')
df['documentation'] = df['documentation'].str.replace(r' ', '')
df['expiry date'] = df['expiry date'].str.replace(r' ', '')
df['issue country'] = df['issue country'].str.replace(r' ', '')

我已经找到了pd.json_normalize(data)功能,但是提供无错误的输出也没有帮助。

希望有人能给出答案。

干杯,并提前感谢

梅迪(Mehdi Golzadeh)

将您的字符串转换为json:

import json

jsondata = json.loads(doc["properties"])

对所有json项目使用if条件,例如:

df = df.assign(json = lambda x: x["properties"].str.replace("'",'"'))
for i,row in df.iterrows():
    jsondata = json.loads(row["json"])
    if "gender" in jsondata:
        df.loc[i,"gender"] = jsondata["gender"]
    else:
        df.loc[i,"gender"] = np.nan
    ...
    do the same for all other parameters

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用VBA将多列拆分为单元格

使用R将一个单元格中的数据拆分为多行

使用VBA根据Excel中的单元格值将数据拆分为多个工作簿

使用 itertools 组合将数据从一个单元格拆分为两个单元格

如何将单元格中的数据拆分为 Excel 上的现有列?

如何使用GScript将单个单元格中的逗号分隔值拆分为Google工作表中的不同列?

如何在R Studio AND SQL中使用限制器将数据中的一个单元格拆分为2个单元格

使用Python或Excel vba将单个Excel单元格内容拆分为不同的单元格

使用 R 将单元格文本拆分为以逗号分隔的各种单元格

如何使用分隔符将数据帧单元格拆分为不同的数据帧。有条件

根据值将单元格拆分为列

将单元格从2列拆分为行

将单元格值拆分为多列

将每个ID熊猫将具有多行数据的单元格拆分为单独的行

循环遍历一系列选定的单元格并使用文本到列将 1 个单元格拆分为 4 列

将Python MeshGrid拆分为单元格

将具有多个数据的单元格拆分为多于一列的多行

R:如何根据单元格中的值将数据帧中的行拆分为多行?

Python-如何根据测力计将列中的单元格拆分为新行

将mySQL中的多个单元格拆分为多行

如何将单元格内的字典列表拆分为数据框中的多行?

将熊猫数据框单元格中的嵌套数组值拆分为多行

将单元格拆分为行,但相对于原始行中的数据

如何使用bash将值从一个单元格拆分为多个单元格

使用 VBA 将 1 个单元格拆分为 3 个和 4 个单元格

将多个数据从单个单元格拆分为多个单元格 Excel 2016

将单元格值拆分为多行而不从其他单元格复制数据

使用SQL将子字符串长度可变的单元格中的一个字符串拆分为几个不同的列

在Excel中,如何使用函数将未知数量的术语拆分到单独工作表的不同单元格中?