gpt4 book ai didi

python - python中字符串float转int

转载 作者:行者123 更新时间:2023-12-02 18:39:47 26 4
gpt4 key购买 nike

我有以下数据框:

<表类=“s-表”><标题>数据 <正文>A(1.2,2)B(1,5)A(5.8, 9)B(8.9,0.9)

我想将这些 float (str) 对象转换为 int。我该怎么做?

期望的输出:

<表类=“s-表”><标题>数据 <正文>A(1,2)B(1,5)A(6, 9)B(9,1)

到目前为止我尝试了什么?

pd.to_numeric(df['data'])

但我收到以下错误:ValueError: Unable to parse string "A(1,2)" at position 0我该如何解决这个问题?

最佳答案

你的字符串实际上是 namedtuples 。像这样对待他们

  • 定义预期的命名元组
  • 使用 pd.eval() 转换为命名元组
  • 使用 f-string 返回所需的字符串表示形式
  • 或者使用Series map()改为通缉代表
df = pd.read_csv(
io.StringIO(
"""df
A(1.2,2)
B(1,5)
A(5.8, 9)
B(8.9,0.9)"""
),
sep="\t",
).rename(columns={"df": "data"})


from collections import namedtuple

A = namedtuple("A", "x y")
B = namedtuple("B", "x y")
df = pd.DataFrame(
{
"data": [
f"{type(nt).__name__}({round(nt.x,0):.0f},{round(nt.y):.0f})"
for nt in pd.eval(df["data"])
]
}
)

使用map()用于四舍五入

df["data"] = pd.Series(pd.eval(df["data"])).map(
lambda nt: str(nt._replace(x=int(round(nt.x, 0)), y=int(round(nt.y, 0))))
)
<表类=“s-表”><标题>数据 <正文>0A(1,2)1B(1,5)2A(6,9)3B(9,1)

关于python - python中字符串float转int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68162237/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com