如何从字符串/字符“扩展”Pandas数据帧?

2024-09-29 23:26:08 发布

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

我从列表中生成了一个pandas数据帧:

在:

lis = [['baby ferrets\ntype: mamal\n»age:2\n»food: Renal'],['dog\ntype: mamal\n»age: 3 months\n»food: dog food'], ['cat\ntype: mamal\n»age: 2\n»food: cat food'], ['bobcat (exotic pet)\ntype: mamal\n»age: 1\n»food: meat'], ['iguana\ntype: reptile\n»age: 2\n»food: crickets']]

df = pd.DataFrame(lis)
df

输出:

^{pr2}$

如何将以前的数据帧转换为(*):

    pet, type, age, food
0   baby ferrets, mammal, 2, Renal
1   dog, mammal, 3 months, dog food
2   cat, mammal, 2, cat food
3   bobcat (exotic pet), mammal, 1, meat
4   iguana, reptile, 2, crickets

当我创建熊猫数据帧时,我试图做到:

df = pd.DataFrame(lis, sep= '\n')

我还试图:

df['newcol'] = lis['pet'].str.extract('([A-Z]\w{0,})', expand=True)
df

但是,我没有匹配所有的元素。是否可以使用pandas获得(*)格式?。


Tags: 数据pandasdfagefoodcatbabypet
1条回答
网友
1楼 · 发布于 2024-09-29 23:26:08

这应该适用于在加载列之后对其进行解析。在

def parse_col(r):
    return pd.Series(data=[i.split(':')[-1] for i in r[0].split('\n')], index=['name', 'type', 'age', 'food'])

df.apply(parse_col, axis=1)

    name    type    age food
0   baby ferrets    mamal   2   Renal
1   dog mamal   3 months    dog food
2   cat mamal   2   cat food
3   bobcat (exotic pet) mamal   1   meat
4   iguana  reptile 2   crickets

说明:

上面的parse_col函数以熊猫^{}的形式接收数据帧的每一行,然后使用这个系列中第一个也是唯一一个元素(r[0])中的字符串。然后用'\n'字符分割字符串,这样每个数据字段都是列表的一个单独的元素,再通过':'字符将标签与实际数据分开。最后,将数据重新组合到另一个^{}中并返回。.apply()DataFrame方法只将上面的函数应用于帧的每一行。在

也可以修改此函数,以便在加载到DataFrame之前解析列表。在

相关问题 更多 >

    热门问题