首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果值是整数,则如何将前导零添加到Dataframe列,条件是另一列的值?

如果值是整数,则如何将前导零添加到Dataframe列,条件是另一列的值?
EN

Stack Overflow用户
提问于 2022-09-06 12:28:41
回答 2查看 28关注 0票数 -1

在以下情况下,是否有一种向Dataframe列添加前导零的有效方法:

  1. 列包含整数值,
  2. 用于同一Dataframe

中另一列的给定值。

例如,对于下面的Dataframe,如何创建一个新的DataFrame,如果:

  1. col_2是整数值(即不是"text""text2")
  2. col_1 == "A"

)。

初始Dataframe:

代码语言:javascript
运行
复制
col_1   col_2
0   A   12345
1   B   863
2   A   text
3   C   893423
4   D   text2

期望输出数据:

代码语言:javascript
运行
复制
col_1   col_2
0   A   00012345
1   B   863
2   A   text
3   C   893423
4   D   text2
EN

回答 2

Stack Overflow用户

发布于 2022-09-06 12:31:50

可以将to_numericerrors="coerce"一起使用,以确保值是数字的:

代码语言:javascript
运行
复制
# is the value numeric?
m1 = pd.to_numeric(df['col_2'], errors='coerce').notna()
# is col_1 equal to "A"?
m2 = df['col_1'].eq('A')

# pick the rows matching both conditions
# and do something with it
df[m1&m2]

如果要确保具有整数而不是任何数字值(即浮点数),则可以使用:

代码语言:javascript
运行
复制
s = pd.to_numeric(df['col_2'], errors='coerce')
# is a numeric value and an integer
m1 = s.notna() & s.eq(s.round())

锌填充

代码语言:javascript
运行
复制
m1 = pd.to_numeric(df['col_2'], errors='coerce').notna()
m2 = df['col_1'].eq('A')

df.loc[m1&m2, 'col_2'] = df.loc[m1&m2, 'col_2'].astype(str).str.zfill(8)

产出:

代码语言:javascript
运行
复制
  col_1     col_2
0     A  00012345
1     B       863
2     A      text
3     C    893423
4     D     text2
票数 1
EN

Stack Overflow用户

发布于 2022-09-06 12:37:25

我觉得这能做你想做的事

代码语言:javascript
运行
复制
df[df['col_1']=='A'].apply(lambda x: isinstance(x, int) )

产出:

代码语言:javascript
运行
复制
col_1    False
col_2    False
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73622081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档