小编典典

对于以下简单情况:

我有一个带有定界符的文本列,我想要两列

最简单的解决方案是:

df['A'], df['B'] = df['AB'].str.split(' ', 1).str

或者,你可以使用以下方法自动为拆分的每个条目创建一个带有一列的DataFrame:

df['AB'].str.split(' ', 1, expand=True)

expand=True如果字符串的分割数不一致,并且要None替换缺失的值,则必须使用。

请注意,无论哪种情况,.tolist()都不需要该方法。都不是zip()。

详细地:

安迪·海登(Andy Hayden)的解决方案最能证明该str.extract()方法的强大功能。

但是对于在已知分隔符上的简单拆分(例如,用破折号拆分或通过空格拆分),该.str.split()方法就足够了1。它对字符串的一列(系列)进行操作,并返回列表的一列(系列):

>>> import pandas as pd

>>> df = pd.DataFrame({'AB': ['A1-B1', 'A2-B2']})

>>> df

AB

0 A1-B1

1 A2-B2

>>> df['AB_split'] = df['AB'].str.split('-')

>>> df

AB AB_split

0 A1-B1 [A1, B1]

1 A2-B2 [A2, B2]

1:如果不确定.str.split()do 的前两个参数是什么,我建议为该方法的纯Python版本使用docs 。

但是你如何去做:

包含两个元素的列表的列

至:

两列,每列包含列表的相应元素?

好吧,我们需要仔细看看.str列的属性。

这是一个神奇的对象,用于收集将列中的每个元素视为字符串的方法,然后在每个元素中尽可能有效地应用相应的方法:

>>> upper_lower_df = pd.DataFrame({"U": ["A", "B", "C"]})

>>> upper_lower_df

U

0 A

1 B

2 C

>>> upper_lower_df["L"] = upper_lower_df["U"].str.lower()

>>> upper_lower_df

U L

0 A a

1 B b

2 C c

但是它还有一个“索引”接口,用于通过其索引获取字符串的每个元素:

>>> df['AB'].str[0]

0 A

1 A

Name: AB, dtype: object

>>> df['AB'].str[1]

0 1

1 2

Name: AB, dtype: object

当然,.str只要可以对其建立索引,则此索引接口并不真正在乎它所索引的每个元素是否实际上是字符串,因此:

>>> df['AB'].str.split('-', 1).str[0]

0 A1

1 A2

Name: AB, dtype: object

>>> df['AB'].str.split('-', 1).str[1]

0 B1

1 B2

Name: AB, dtype: object

然后,只需利用Python元组对可迭代对象进行拆包即可

>>> df['A'], df['B'] = df['AB'].str.split('-', 1).str

>>> df

AB AB_split A B

0 A1-B1 [A1, B1] A1 B1

1 A2-B2 [A2, B2] A2 B2

当然,从拆分一列字符串中获取一个DataFrame非常有用,以至于该.str.split()方法可以通过expand=True参数为你做到这一点:

>>> df['AB'].str.split('-', 1, expand=True)

0 1

0 A1 B1

1 A2 B2

因此,完成我们想要的工作的另一种方法是:

>>> df = df[['AB']]

>>> df

AB

0 A1-B1

1 A2-B2

>>> df.join(df['AB'].str.split('-', 1, expand=True).rename(columns={0:'A', 1:'B'}))

AB A B

0 A1-B1 A1 B1

1 A2-B2 A2 B2

该expand=True版本虽然较长,但与元组拆包方法相比具有明显的优势。元组解压缩不能很好地处理不同长度的拆分:

>>> df = pd.DataFrame({'AB': ['A1-B1', 'A2-B2', 'A3-B3-C3']})

>>> df

AB

0 A1-B1

1 A2-B2

2 A3-B3-C3

>>> df['A'], df['B'], df['C'] = df['AB'].str.split('-')

Traceback (most recent call last):

[...]

ValueError: Length of values does not match length of index

>>>

但是expand=True通过放置None没有足够“拆分”的列来很好地处理它:

>>> df.join(

... df['AB'].str.split('-', expand=True).rename(

... columns={0:'A', 1:'B', 2:'C'}

... )

... )

AB A B C

0 A1-B1 A1 B1 None

1 A2-B2 A2 B2 None

2 A3-B3-C3 A3 B3 C3

2020-02-11

python如何输出两列数据_Python-如何将一列分为两列?相关推荐

  1. python一行输出多个数据_Python高效数据分析的8个技巧

    原标题:Python高效数据分析的8个技巧 ​开发一个深度学习应用,第一步总是数据分析,这篇文章介绍了8个使用Python进行数据分析的方法,不仅能够提升运行效率,还能够使代码更加"优美&q ...

  2. python增加一列数据_Python编程给numpy矩阵添加一列方法示例

    首先我们有一个数据是一个mn的numpy矩阵现在我们希望能够进行给他加上一列变成一个m(n+1)的矩阵 import numpy as np a = np.array([[1,2,3],[4,5,6] ...

  3. python一行输出多个数据_python 如何将一系列数字十个一行输出

    答案如下: 代码详解 1.使用循环输出列表,利用 计数器控制输出数量,当输出到第十个,计数器归零,重新开始计数 2.print输出增加end参数可以控制输出后以什么结尾 3.这里使用range方法快速 ...

  4. python怎么输出数组全部数据_Python打印输出数组中全部元素

    学习Python的人都知道数组是最常用的的数据类型,为了保证程序的正确性,需要调试程序. 因此,需要在程序中控制台中打印数组的全部元素,如果数组的容量较小,例如 只含有10个元素,采用print命令或 ...

  5. excel如何筛选一列数据的重复值,并找到其他列的对应数据

    excel如何筛选一列数据的重复值,并找到其他列的对应数据.就会用到excel的高级筛选功能.如下: 经过筛选,就得到我们想要的结果了.

  6. python对比excel两列数据_python 对比excel表格数据表-python实现两个excel表列数据对比若源表与目标表存......

    在数据分析方面,比起python,excel的局限性在哪 data3 = pandas.merge(data1, data2, on=['名称'], how='inner') inner:内连接,取交 ...

  7. python删除一列数据_python删除txt第一列数据库

    带你读<Python数据分析与数据化运营(第2版)>之一:Python和数据化运营 点击查看第二章点击查看第三章Python数据分析与数据化运营(第2版) 宋天龙 著 第1章 Python ...

  8. python删除某列数据_python删除txt第一列数据库

    带你读<Python数据分析与数据化运营(第2版)>之一:Python和数据化运营 点击查看第二章点击查看第三章Python数据分析与数据化运营(第2版) 宋天龙 著 第1章 Python ...

  9. python增加一列数据_python数据怎么添加列?

    python在DataFrame数据中添加列的方法: 1.使用concat方法在数据中添加列 concat方法相当于数据库中的全连接(union all),它不仅可以指定连接的方式(outer joi ...

  10. python每行输出10个数据_python 如何重复地在一行输出数据?

    你的位置: 问答吧 -> Linux 编程 -> 问题详情 python 如何重复地在一行输出数据? 我希望 python 的输出结果只在一行上不断地刷新显示,要实现两点: 一.输出结果1 ...

最新文章

  1. css的repaint和reflow
  2. 怎么设计一个好的数据库
  3. 常搓八个部位可以防衰老 - 健康程序员,至尚生活!
  4. c++如何输入数组_从一个数组中找出 N 个数,其和为 M 的所有可能最 nice 的解法...
  5. sqlite数据库备份还原、导出导入
  6. 前置摄像头 镜像_iPhone 前置摄像头拍照左右相反?试试 iOS 13 的照片编辑功能...
  7. 网络编程之 信号捕捉器(函数指针与回调函数)
  8. django之多表查询-2
  9. Beanutils基本用法
  10. 魔方实时通信im组件
  11. Python中文文档概览
  12. tinymce 上传本地视频
  13. 【源码+图片素材】1小时做出Java坦克大战小游戏_Java初级项目_Java练手项目_Java项目实战_Java游戏开发实战教学_Java课程设计_课设
  14. CS5216 Capstone DP to hdmi 1080p转换器或者转接线设计原理|CS5216 DP转HDMI转换电路原理图
  15. 电脑游戏测试cpugpu软件,【七彩虹GTX760评测】七彩虹iGame760烈焰战神规格介绍-中关村在线...
  16. 艺展中国-一代名家刘泽仲作品展
  17. windows/linux 系统U盘制作系统盘(实战,简单)
  18. 微信实名认证是成年的,但游戏是未成年的,怎么改
  19. C#爬虫,HttpClient请求,HtmlAgilityPack,HtmlDocument使用
  20. 20162316刘诚昊 第三周学习总结

热门文章

  1. numpy、cv2等操作图片基本操作
  2. web前端页面——移动端简单登录页面、下拉菜单(代码详细注释)
  3. P5068 [Ynoi2015]我回来了
  4. centos7.4安装nginx1.8.1 php7.7.11 安装 MySQL5.7.20
  5. 程序包管理器控制台 Add-Migration 用法
  6. 20145326蔡馨熠《信息安全系统设计》第2周学习总结
  7. PHP5.3--PHP7 新特性总结
  8. 动态规划在求解传递闭包问题中的应用(JAVA)--Warshell算法
  9. 关于Oracle数据库导入数据显示中文乱码
  10. PHP-date(),time()函数的应用