python - 将包含 2 个值的列拆分为 pandas df 中的不同列

标签 python regex python-2.7 python-3.x pandas

我在 pandas df 中有一张 table

bigram         frequency
(123,3245)       2
(676,35346)      84
(93,32)          9

以此类推,直到 50 行。

我正在寻找的是,将 bigram 列拆分为两个不同的列,删除括号和逗号,

col1     col2      frequency
123       3245        2
676       35346       84
93        32          9

有没有办法在逗号之后拆分 if,并删除括号。

最佳答案

如果您的 bigram 列恰好是字符串格式,您可以使用带有正则表达式的 .str.extract() 方法从中提取数字:

pd.concat([df.bigram.str.extract('(?P<col1>\d+),(?P<col2>\d+)'), df.frequency], axis = 1)

enter image description here

或者如果 bigram 列是元组类型:

方法 1:使用 pd.Series 从元组创建列:

pd.concat([df.bigram.apply(lambda x: pd.Series(x, index=['col1', 'col2'])), 
           df.frequency], axis=1)

方法二:使用.str获取元组的第一个和第二个元素

df['col1'], df['col2'] = df.bigram.str[0], df.bigram.str[1]
df = df.drop('bigram', axis=1)

关于python - 将包含 2 个值的列拆分为 pandas df 中的不同列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40646032/

相关文章:

python - smart_unicode 在我的 Django 项目中不起作用

python - 在Django中,如何实现一个事务的可重复读?

python - 使用 capsys 捕获 stdout 和 stderr

python - 使用正则表达式 python 提取文本 block

python - 使用opencv和python隔离图片中的数字矩阵

regex - perl中qr打印结果的含义

php - `$/i` 在正则表达式中的含义

python - 使用 Python 进行基本 xml 解析

JavaScript 值在变量中未正确评估,但作为字符串正常工作

Python:嵌套列表中的第一个元素