这应该非常简单,但我找不到能产生可接受结果的解决方案。我有以下数据框:
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
我意识到有很多关于此的帖子,但它们似乎都不适用于我的具体情况。我必须遗漏一些非常明显的东西。
非常感谢任何帮助!
答案 0 :(得分:1)
您希望首先将浮点数转换为整数然后转换为字符串:
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
答案 1 :(得分:0)
你可以保留数字:
(i+l,j+c)