我有下面的数据框架,其中col2是一个字典,有一个元组列表作为值.在整个数据帧中,密钥被一致地"添加"和"删除".
Input df
col1 | col2 |
---|---|
value1 | {'added': [(59, 'dep1_v2'), (60, 'dep2_v2')], 'deleted': [(59, 'dep1_v1'), (60, 'dep2_v1')]} |
value 2 | {'added': [(61, 'dep3_v2')], 'deleted': [(61, 'dep3_v1')]} |
下面是一个可复制粘贴的示例数据框:
jsons = ["{'added': [(59, 'dep1_v2'), (60, 'dep2_v2')], 'deleted': [(59, 'dep1_v1'), (60, 'dep2_v1')]}",
"{'added': [(61, 'dep3_v2')], 'deleted': [(61, 'dep3_v1')]}"]
df = pd.DataFrame({"col1": ["value1", "value2"], "col2": jsons})
edit
col2直接来自diff_parsed field of pydriller输出
我想"爆炸"col2,以便获得以下结果:
Desired output
col1 | number | added | deleted |
---|---|---|---|
value1 | 59 | dep1_v2 | dep1_v1 |
value1 | 60 | dep2_v2 | dep2_v1 |
value2 | 61 | dep3_v2 | dep3_v1 |
到目前为止,我try 了以下方法:
df = df.join(pd.json_normalize(df.col2))
df.drop(columns=['col2'], inplace=True)
上面的代码被简化了.我首先操纵该列,将其转换为正确的json.它试图先在"添加"和"删除"上爆炸,然后try 使用格式来获得我想要的...但是元组列表没有被保留,我得到了以下信息:
col1 | added | deleted |
---|---|---|
value1 | 59, dep1_v2, 60, dep2_v2 | 59, dep1_v1, 60, dep2_v1 |
value2 | 61, dep3_v1 | 61, dep3_v2 |
谢谢