我有一个包含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
答案 0 :(得分:1)
我自己做的。
我使用map
和lambda
函数将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)
然后,您将在数据框中将所有键及其键值视为单独的列。