如何在python中将字符串转换为pandas数据框[重复]

Posted

技术标签:

【中文标题】如何在python中将字符串转换为pandas数据框[重复]【英文标题】:How to transform string into pandas dataframe in python [duplicate] 【发布时间】:2020-12-11 07:58:48 【问题描述】:

我有这个字符串

"id=IAfpK, val=58, id=WNVdi, val=64, id=jp9zt, val=47"

。我想用它创建一个熊猫数据框。有什么想法吗?

【问题讨论】:

import pandas as pdstring = "id=IAfpK, val=58, id=WNVdi, val=64, id=jp9zt, val=47"df = pd.DataFrame('String' : [string])df @DavidErickson 我想要一个包含两列且长度为 3 的数据框,因为有 3 个键、val 对 有道理。如果您可以对其进行修改并明确说明您想要什么,这些详细信息应该在您的问题中。 @DavidErickson 如果没有重复为什么要投票关闭它! 我撤回了我的投票,因为它不像我在您解释后复制粘贴的代码那么简单。 【参考方案1】:
import pandas as pd

data = "id=IAfpK, val=58, id=WNVdi, val=64, id=jp9zt, val=47"

data = [*map(lambda x: x.split('='), data.split(', '))]
ids = [*filter(lambda x: x[0] == 'id', data)]
vals = [*filter(lambda x: x[0] == 'val', data)]

df = pd.DataFrame.from_dict(
    data=
        'id': [*map(lambda x: x[1], ids)],
        'val': [*map(lambda x: x[1], vals)]
    
)

【讨论】:

仅对非常短的数据有用,而且过于复杂。并非所有内容都必须是 map()lambdafilter()。在必要/有用的地方使用它,并且在使用太多时总是使用timeit。以我的经验,整体代码更难阅读且更差(但有其用途)。而是:>>> def better(data): ... from collections import defaultdict as ddict ... out = ddict(list) ... data = [it.split("=") for it in [item.strip() for item in data.split(",")]] ... for key, val in data: ... out[key].append(val) ... return out 抱歉,cmets 无法正确格式化。只需在每个 ... 上添加一个换行符。

以上是关于如何在python中将字符串转换为pandas数据框[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中将文本字符串列表转换为熊猫数据框?

如何在 Pandas 数据框中将日期转换为 ISO-8601 DateTime 格式

在pandas python中将指数或科学数转换为整数

在python pandas中将多年列转换为单年列(整洁格式)[重复]

在 Pandas 中将字符串列转换为日期的有效方法(在 Python 中),但没有时间戳

在 Python pandas 中将 xlsx 文件转换为字典