Python 熊猫:映射数据系列(浮点到字符串),而不删除尾随零
我正在尝试创建一个包含以下格式字符串的数据系列:Python 熊猫:映射数据系列(浮点到字符串),而不删除尾随零,python,numpy,pandas,Python,Numpy,Pandas,我正在尝试创建一个包含以下格式字符串的数据系列: “%.2f+/-%.2f” 使用两个熊猫数据系列(测量值及其误差)。以下是我是如何实现这一点的: df["F"] = df["Fint"].map(str) + " +/- " + df["Fint Err"].map(str) 但是,映射(str)会从序列中的值中删除尾随的零 例如,对于来源“6lambda处的VLA 3” In[101]: df["Fint"] Out[101]: Source Lambda Fint VLA 2
“%.2f+/-%.2f”
使用两个熊猫数据系列(测量值及其误差)。以下是我是如何实现这一点的:
df["F"] = df["Fint"].map(str) + " +/- " + df["Fint Err"].map(str)
但是,映射(str)会从序列中的值中删除尾随的零
例如,对于来源“6lambda处的VLA 3”
In[101]: df["Fint"]
Out[101]:
Source Lambda Fint
VLA 2 6.0 0.15
3.6 0.19
VLA 3 6.0 0.40
3.6 0.29
如何阻止删除尾随的零
很明显,正如你所看到的,我实际上是在使用一个数据帧(但由于map是一个数据系列函数,我认为这会简化问题),如果有一种方法可以用applymap实现这一点,我很乐意知道
谢谢 如果数据以浮点数开始,则它没有“尾随零”。但从您的示例来看,听起来您真正想要的是所有数字至少有4位数长,如果需要,可以添加尾随的零。试试这个:
# function that maps float->str, then pads with "0" up to length 4
to_4digit_str = lambda flt: str(flt).ljust(4,"0")
df["F"] = df["Fint"].map(str) + " +/- " + df["Fint Err"].map(to_4digit_str)
我可以问一下您使用了什么web服务来生成这个问题的运行代码片段部分吗?它看起来很酷…它看起来很酷而且很没用。把它编辑掉@Greg不要将代码段用于live HTML/jsI以外的其他用途。我建议您编写自己的lambda表达式来进行字符串格式化,并指定小数点后保留的数字。@sehe我可以想出一些更有意义的使用案例。你不能说这项服务对全人类都没用,对吧?我没有。你凭什么认为我指的是这个问题以外的任何东西。下一次,只需查看来源:太棒了,谢谢,这就像一个魅力(两个系列都有地图(to_4d…)。我试过那样的方法,但没能成功。是否有任何方法可以将map与以下格式字符串一起使用:fmt=“lambda x:%.2f”%str(x)for i,x in df[“Fint”]”减去lambda表达式不确定我是否完全理解您的问题。您可以执行类似于fmt=“%i%s”format_line=lambda r:fmt%(r['Fint'],str(r['Fint err']).ljust(4,'0'))df['formatted_col'的操作=df.apply(format_line,axis=1)我在这里使用的两个技巧是:1)在格式字符串中使用%I表示它是一个整数(%f表示浮点,但它呈现w/o尾随零)和2)df上的apply函数。确保axis=1带有该值。
# function that maps float->str, then pads with "0" up to length 4
to_4digit_str = lambda flt: str(flt).ljust(4,"0")
df["F"] = df["Fint"].map(str) + " +/- " + df["Fint Err"].map(to_4digit_str)