将数字转换为 pandas DataFrame 中的特定字符串格式
Converting numbers to particular string format in a pandas DataFrame
我需要 运行 一个可以用循环完成的任务,但我认为有一种更有效、更漂亮的方法可以做到这一点。我有一个 DataFrame
,它有一个整数列,我想将其转换为 4 位字符串表示形式。即3应转换为'0003',234应转换为'0234'。我正在寻找一种向量操作,它可以使用简单的代码快速对列中的所有条目执行此操作。
你可以使用Series.str.zfill()方法:
df['column_name'] = df['column_name'].astype(str).str.zfill(4)
演示:
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
您也可以使用 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
在 f 字符串中,part after the colon 表示“用四个字符对字段进行零填充并使其成为带符号的 base-10 整数”。
我需要 运行 一个可以用循环完成的任务,但我认为有一种更有效、更漂亮的方法可以做到这一点。我有一个 DataFrame
,它有一个整数列,我想将其转换为 4 位字符串表示形式。即3应转换为'0003',234应转换为'0234'。我正在寻找一种向量操作,它可以使用简单的代码快速对列中的所有条目执行此操作。
你可以使用Series.str.zfill()方法:
df['column_name'] = df['column_name'].astype(str).str.zfill(4)
演示:
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
您也可以使用 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
在 f 字符串中,part after the colon 表示“用四个字符对字段进行零填充并使其成为带符号的 base-10 整数”。