首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >一列中的python分裂数

一列中的python分裂数
EN

Stack Overflow用户
提问于 2018-07-26 14:16:46
回答 3查看 393关注 0票数 0

请帮助解释如何做以下工作,我是如此挣扎。

我有一个名为data3的数据集:

  • 类型(column1) = GTIN或GCP的字符串值
  • 键(column2) = 14位数

我需要把这14位数字分解成这样的逻辑:

  • 如果是type = GCP,则返回键的前三个字母。
  • 如果type = GTIN和位置2-6在14位数= 00000,那么返回位置7-9在键.
  • 如果type = gtin和位置2-6不是00000,那么在键中返回数字2-4 .

例子:

代码语言:javascript
运行
复制
 - Type       -Key    
 - GTIN       -1234589564652344 
 - GCP        -1564546545452344 
 - GTIN       -6000005645324234

如果类型是GCP,我只想要前三个键的数字,如156。如果它是GTIN,并有5个零位在2-6,我想要的位置7-9,这将是564英寸。

如果类型是GTIN,并且在位置2-6中没有5个零,那么我希望返回数字2-4,如上面示例中的234。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-07-26 15:04:14

您可以使用apply函数执行以下操作:

代码语言:javascript
运行
复制
# create function based on values
def get_values(row):

    if row['Type']  == 'GCP':
        return row['Key'][:3]
    elif row['Type'] == 'GTIN' and row['Key'][1:6] == '00000':
        return row['Key'][6:9]
    elif row['Type'] == 'GTIN' and row['Key'][2:7] != '00000':
        return row['Key'][1:4]

# convert to string
df['Key'] = df['Key'].astype(str)

# now use apply function
df['new'] = df.apply(get_values, axis=1)

   Type               Key  new
0  GTIN  1234589564652344  234
1   GCP  1564546545452344  156
2  GTIN  6000005645324234  564
票数 0
EN

Stack Overflow用户

发布于 2018-07-26 14:43:17

你做了一个很好的工作,把逻辑分解为3个ifs。

现在,将每个if分解成一些小代码。第一个很简单:

代码语言:javascript
运行
复制
if type == "GCP":
    return key[:3]

你有什么不能编码的?

票数 0
EN

Stack Overflow用户

发布于 2018-07-26 14:57:42

如果您的数字存储为字符串,那么您可以很容易地在python中拆分。可以使用所需字符的索引拆分字符串。例如,如果您想从字符串中提取前三个字符,则可以这样做。

代码语言:javascript
运行
复制
key[:3]

这将给你所有的东西,但不包括在3个位置的字符。要把角色从中间拉出来,你可以用

代码语言:javascript
运行
复制
key[1:6]

这将给出从1开始到6点的所有数字。(请记住,索引从0开始)

如果您想检查字符串的中间,看看它是否等于某种东西,请尝试如下所示:

代码语言:javascript
运行
复制
if key[1:6] == "00000":
    #do something

这将比较字符串在1和6之间的部分,看看它是否等于"00000“。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51541042

复制
相关文章

相似问题

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