将字典分解为不同的行

2024-09-29 21:28:43 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的原始数据集的外观:

url         boolean          details                                             
                                                                                       numberOfPages       date
xzy.com     0                {'https://www.eltako.depdf': {'numberOfPages': 440, 'date': '2017-09-20'},'https://new.com': {'numberOfPages': 240, 'date': '2017-09-20'} }

numberOfPages和date列最初为空,而details列有一个字典。我想遍历所有行(URL)并检查它们的details列。对于details列中的每个键,我想单独创建一行,然后使用numberOfPages和date值添加列值。结果应该是这样的:

url         boolean          pdfLink                             numberOfPages   date           
xzy.com     0                https://www.eltako.depdf            440             2017-09-20
                             https://new.com                     240             2017-09-20

我试过了,但第二行给了我一个错误:TypeError: string indices must be integers

def arrange(df):
    
    df=df.explode('details').reset_index(drop=True)
    out=pd.DataFrame(df['details'].map(lambda x:[x[y] for y in x]).explode().tolist())

Infocol的原始类型是dict。我也尝试将该类型更改为str,但仍然得到相同的错误。然后我尝试将lambda函数更改为:

lambda x:[y for y in x]

但我得到的结果是这样的:

url         boolean          details                             0    
xzy.com     0                https://www.eltako.depdf            h
Nan         Nan                                                  t
                                                                 t
                                                                 p
             

所以基本上链接的字符被分解成不同的行。我怎样才能解决这个问题


{'Company URL': {0: 'https://www.eltako.de/'},
 'Potential Client': {0: 1},
 'PDF Link': {0: nan},
 'Number of Pages': {0: nan},
 'Creation Date': {0: nan},
 'Info': {0: {'https://www.eltako.de/wp-content/uploads/2020/11/Eltako_Gesamtkatalog_LowRes.pdf': {'numberOfPages': 440,
    'date': '2017-09-20'}}},1: {'https:new.com: {'numberOfPages': 230,
    'date': '2017-09-20'}}}}

Tags: lambdahttpscomurldfnewdatewww

热门问题