繁体   English   中英

如何在dataframe中的一系列数字中添加前导零,然后添加后缀?

[英]how to add leading zeros to a series of numbers in a dataframe, and then add a suffix?

我有一个关于操纵 dataframe 的问题。 就我而言,dataframe 有一列,其中有从 1 到 1999 的数字。

我想做以下操作:

  1. 在数字前添加零以使其成为 6 位代码,例如 0000001,000002,...001999
  2. 为 6 位代码添加后缀,例如 000001xx,000002xx,...001999xx

我能怎么做?

In [93]: df = pd.DataFrame({"num":range(1, 2000)})
In [94]: df
Out[94]:
       num
0        1
1        2
2        3
3        4
4        5
...    ...
1994  1995
1995  1996
1996  1997
1997  1998
1998  1999

[1999 rows x 1 columns]
In [97]: df["new_num"] = df["num"].map("{0:0=6d}".format)
In [98]: df["new_num"] = df["new_num"] + "xx"

In [99]: df
Out[99]:
       num   new_num
0        1  000001xx
1        2  000002xx
2        3  000003xx
3        4  000004xx
4        5  000005xx
...    ...       ...
1994  1995  001995xx
1995  1996  001996xx
1996  1997  001997xx
1997  1998  001998xx
1998  1999  001999xx

[1999 rows x 2 columns]

您可以将以上 2 个步骤合二为一

df["num"].map("{0:0=6d}xxx".format)

您可以通过应用 lambda (或 map参见 bigbounty 的答案)从您的号码创建一个字符串来计算格式化的字符串列:

import pandas as pd


df = pd.DataFrame(({ "nums": range(100,201)}))

# format the string in one go
df["modded"] = df["nums"].apply(lambda x:f"{x:06n}xxx")
print(df)

Output:

     nums     modded
0     100  000100xxx
1     101  000101xxx
2     102  000102xxx
..    ...        ...
98    198  000198xxx
99    199  000199xxx
100   200  000200xxx

只需使用str.rjust

import pandas as pd

df = pd.DataFrame({"num": range(1, 2000)})

print(df.num.astype(str).str.rjust(6, '0') + "xx")

0       000001xx
1       000002xx
2       000003xx
3       000004xx
4       000005xx
          ...   
1994    001995xx
1995    001996xx
1996    001997xx
1997    001998xx
1998    001999xx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM