如何在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 pd
string = "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()
、lambda
或 filter()
。在必要/有用的地方使用它,并且在使用太多时总是使用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数据框[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Pandas 数据框中将日期转换为 ISO-8601 DateTime 格式
在python pandas中将多年列转换为单年列(整洁格式)[重复]