将大字典字符串转换为字典

时间:2019-10-03 06:46:34

标签: python json python-3.x pandas dictionary

我有一个包含144005行的大数据框。数据框的一列是一串字典,例如

'{"Step ID":"78495","Choice Number":"0","Campaign Run ID":"23199"},
    {"Step ID":"78495","Choice Number":"0","Campaign Run ID":"23199"},
    {"Step ID":"78495","Choice Number":"0","Campaign Run ID":"23199"}'

我想将此字符串转换为单独的字典。为此,我一直在使用json.loads(),但是,我一次必须遍历该字典字符串,然后使用json.loads()将其转换为字典,然后将其转换为新的数据框,在遍历整个原始数据框时,请继续追加到该数据框。

我想知道是否存在一种更有效的方法,因为要花很长时间才能遍历144005行的整个数据帧。

这是我一直在做的一小段:

d1 = df1['attributes'].values
d2 = df1['ID'].values
for i,j in zip(d1,d2):
    data = json.loads(i)
    temp = pd.DataFrame(data, index = [j])
    temp['ID'] = j
    df2 = df2.append(temp, sort=False)

我的“属性”列由一行字典字符串组成,“ Id”列包含其对应的ID

2 个答案:

答案 0 :(得分:1)

我自己做的。

我使用maplambda函数将json.loads()有效地应用于每一行,然后将这些数据转换为数据帧并存储了输出。

在这里。

l1 = df1['attributes'].values
data = map(lambda x: json.loads(x), l1)
df2 = pd.DataFrame(data)

答案 1 :(得分:0)

只需使用type()

检查列的类型

如果类型为Series

data['your column name'].apply(pd.Series)  

然后,您将在数据框中将所有键及其键值视为单独的列。