gpt4 book ai didi

python - 在 Pandas 中将多列与数值组合

转载 作者:太空宇宙 更新时间:2023-11-03 16:48:31 25 4
gpt4 key购买 nike

这应该非常简单,但我找不到产生可接受结果的解决方案。我有以下数据框:

 df = Building  Block   Lot 
A 5731 54
B 5738 34

现在我需要组合 Block (dtype float64) 和 Lot (dtype float64) 列,而且还要在所有组合前面加上“30”并直接在 Block 之后添加“00”。期望的结果是:

df = Building  Block  Lot   BBL
A 5731 54 3057310054
B 5738 34 3057380034

似乎无论我尝试什么解决方案,都会出现问题。我能得到的最接近的是:

 In:  df['BBL'] = "30" + df.Block.map(str) + "00" + df.Lot
Out: Building Block Lot BBL
A 5731 54 305731.00054.0
B 5738 34 305738.00034.0

如您所见,它在每列后面添加 .0。我尝试使用:

df['BBL'] = df.BBL.replace(to_replace=".0", value='', inplace=True)

但是没有任何效果。我在另一篇文章中找到的这个函数也是如此:

def trim_fraction(text):
if '.0' in text:
return text[:text.rfind('.0')]
return text

我意识到有很多关于此的帖子,但似乎没有一个适合我的具体情况。我一定错过了一些非常明显的东西。

任何帮助将不胜感激!

最佳答案

您希望首先将 float 转换为整数,然后再转换为字符串:

In [78]: df['BBL'] = ('30' + df.Block.astype(pd.np.int64).astype(str) + '00' 
+ df.Lot.astype(pd.np.int64).astype(str)).astype(pd.np.int64)

In [79]: df
Out[79]:
Building Block Lot BBL
0 A 5731.0 54.0 3057310054
1 B 5738.0 34.0 3057380034

In [80]: df.dtypes
Out[80]:
Building object
Block float64
Lot float64
BBL int64
dtype: object

关于python - 在 Pandas 中将多列与数值组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36094768/

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