微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 将一列json字符串转换为数据列

我有一个大约30000行的大数据帧和一个包含json字符串的列.每个json字符串包含许多变量及其值我希望将此json字符串分解为数据列

两行看起来像

0 {"a":"1","b":"2","c":"3"}
1 {"a" ;"4","b":"5","c":"6"}

我想将其转换为数据帧

a   b   c
1   2   3
4   5   6

请帮忙

解决方法:

您的列值似乎在实际的json字符串之前有一个额外的数字.所以你可能想要首先剥离(如果不是这样的话,请跳到Method)

一种方法是将函数应用于列

# constructing the df
df = pd.DataFrame([['0 {"a":"1","b":"2","c":"3"}'],['1 {"a" :"4","b":"5","c":"6"}']], columns=['json'])

# print(df)
                         json
# 0  0 {"a":"1","b":"2","c":"3"}
# 1  1 {"a" :"4","b":"5","c":"6"}

# function to remove the number
import re

def split_num(val):
    p = re.compile("({.*)")
    return p.search(val).group(1)

# applying the function
df['json'] = df['json'].map(lambda x: split_num(x))
print(df)

#                          json
# 0   {"a":"1","b":"2","c":"3"}
# 1  {"a" :"4","b":"5","c":"6"}

方法

一旦df采用上述格式,下面将每个行条目转换为字典:

df['json'] = df['json'].map(lambda x: dict(eval(x)))

然后,将pd.Series应用于该列将完成该任务

d = df['json'].apply(pd.Series)
print(d)
#   a  b  c
# 0  1  2  3
# 1  4  5  6

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐