繁体   English   中英

在 pandas / python 中拆分数字字符串

[英]Splitting a number string in pandas / python

我希望通过在每行的最后一个 0 上拆分,将以下行拆分为我的 pandas dataframe 中的两列。

000012345
000012345
000012345

我希望它看起来像什么

0000 12345
0000 12345

我一直在研究 str.split,似乎无法弄清楚如何解决这个问题,因为没有通常的分隔符,而且我无法弄清楚如何在第 4 个 0 上拆分它。

我之前使用以下命令成功解决了类似问题,但似乎无法弄清楚,因为我不希望拆分标签,而是要拆分行中的值。

df.labels.str.split(':',1).tolist()

假设“col”列,您可以使用后向正则表达式进行split

df['col'].str.split(r'(?<=^.{4})', expand=True)

正则表达式:

(?<=^.{4})    # match the empty space preceded by the first 4 characters

或使用str.extract

df['col'].str.extract('(^.{4})(.*)')
# df[['col2', 'col3']] = df['col'].str.extract('(^.{4})(.*)')

完整示例:

df[['col2', 'col3']] = df['col'].str.split('(?<=^.{4})', expand=True)

output:

         col  col2   col3
0  000012345  0000  12345
1  000012345  0000  12345
2  000012345  0000  12345

使用字符串替换检查以下代码

df = pd.DataFrame({'col1':['000012345','000012345','000012345']})

df['col2'] =  df['col1'].astype(int)

df['col3'] = df.apply(lambda row: row['col1'].replace(str(row['col2']),''), axis =1)

print(df)

Output:

        col1   col2  col3
0  000012345  12345  0000
1  000012345  12345  0000
2  000012345  12345  0000

暂无
暂无

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

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