【发布时间】:2021-10-29 07:28:18
【问题描述】:
我正在读取 csv 文件并将其转换为 json 文件,但我需要从数据中创建“地址”字段作为数组字段。我已经为它编写了代码,但无法将其作为数组。 所有与地址相关的字段都在地址列下,地址列是一个数组字段。
输入文件
"source_id"|"first_name"|"last_name"|"address_type"|"address_line_1"|"city"
"41614335"|Reinaldo|Tonkoski Jr.|Primary|Deh 211 Box 2222|Brookings|
"41614335"|Reinaldo|Tonkoski Jr.|home|"2409 10th St Apt 123"|Brookings
"07605348"|E|Christodoulou|Primary|"4D Ag Lavras st"|Kifissia
"07605348"|E|Christodoulou|home|"131 N Hamilton Dr Apt 308"|Beverly Hills
输出获取
[
{
"source_id":7605348,
"first_name":"E",
"last_name":"Christodoulou",
"parsed_address":[
{
"address_type":"Primary",
"address_line_1":"4D Ag Lavras st",
"city":"Kifissia"
}
]
},
{
"source_id":7605348,
"first_name":"E",
"last_name":"Christodoulou",
"parsed_address":[
{
"address_type":"home",
"address_line_1":"131 N Hamilton Dr Apt 308",
"city":"Beverly Hills"
}
]
}
]
预期输出:
[
{
"source_id":7605348,
"first_name":"E",
"last_name":"Christodoulou",
"parsed_address":[
{
"address_type":"Primary",
"address_line_1":"4D Ag Lavras st",
"city":"Kifissia"
},
{
"address_type":"home",
"address_line_1":"131 N Hamilton Dr Apt 308",
"city":"Beverly Hills"
}
]
},
{
"source_id":41614335,
"first_name":"Reinaldo",
"last_name":"Tonkoski Jr.",
"parsed_address":[
{
"address_type":"Primary",
"address_line_1":"Deh 211 Box 2222",
"city":"Kifissia"
},
{
"address_type":"home",
"address_line_1":"2409 10th St Apt 123",
"city":"Beverly Hills"
}
]
}
]
代码尝试
df = pd.read_csv("file")
g_cols = ['source_id', 'first_name', 'last_name']
cols = ['address_type', 'address_line_1', 'city']
# Handling Address fields
df2 = df.drop_duplicates().groupby(g_cols)[cols].apply(lambda x: x.to_dict('records')).reset_index(
name="parsed_address").to_dict('record')
# Removing duplicate entry in address field
for i in range(0, len(df2)):
final_list = [dict(s) for s in set(frozenset(d.items()) for d in df2[i]["parsed_address"])]
df2[i]["parsed_address"] = final_list
# Convert resultant list to pandas dataframe
df22 = pd.DataFrame(df2)
print(df22)
【问题讨论】:
-
嘿,您是否为此发布了部分代码?运行此代码时,我似乎遇到了 source_id 的关键错误。
-
发布了部分代码,因为实现的代码也形成了其他一些要求,但是这段代码很好地定义了问题。你能告诉我你从这段代码中得到了什么确切的错误吗?
-
是的,它说 KeyError: 'source_id' at line 7 df2 = df.drop()...
-
请在此处输入行。请检查输入数据和代码中的拼写
-
不知道为什么会抛出这个错误。您能否检查我的代码并让我知道我在代码中缺少什么以在 json 输出中正确获取地址字段