在pandas DataFrame中将数字转换为特定的字符串格式

spl*_*ter 3 python string-formatting dataframe python-3.x pandas

我需要运行一个可以通过循环完成的任务,但我想有一个更有效和漂亮的方法来做到这一点.我有一个DataFrame整数列,我想将其转换为4位数字符串表示.也就是说,3应该转换为'0003',234应该转换为'0234'.我正在寻找一个向量操作,它将立即对列中的所有条目执行此操作,快速使用简单的代码.

cra*_*gim 8

您还可以使用Series.apply()方法和封装在 lambda 函数中的 f 字符串来执行此操作:

In [1]: import pandas as pd


In [2]: df = pd.DataFrame({'a':[1,2], 'b':[3,234]})

In [3]: df
Out[3]:
   a    b
0  1    3
1  2  234

In [4]: df['b'] = df['b'].apply(lambda x: f"{x:04d}")

In [5]: df
Out[5]:
   a     b
0  1  0003
1  2  0234
Run Code Online (Sandbox Code Playgroud)

在 f 字符串中,冒号后面的部分表示“用四个字符对字段进行零填充,使其成为有符号的以 10 为基数的整数”。


Max*_*axU 7

你可以使用Series.str.zfill()方法:

df['column_name'] = df['column_name'].astype(str).str.zfill(4)
Run Code Online (Sandbox Code Playgroud)

演示:

In [29]: df = pd.DataFrame({'a':[1,2], 'b':[3,234]})

In [30]: df
Out[30]:
   a    b
0  1    3
1  2  234

In [31]: df['b'] = df['b'].astype(str).str.zfill(4)

In [32]: df
Out[32]:
   a     b
0  1  0003
1  2  0234
Run Code Online (Sandbox Code Playgroud)