Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫:映射数据系列(浮点到字符串),而不删除尾随零_Python_Numpy_Pandas - Fatal编程技术网

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)