python – 包含2个值的拆分列到pandas df中的不同列中

我有一张pandas df的桌子

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

是否有任何方法可以在逗号之后拆分,并删除括号.

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

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

《python – 包含2个值的拆分列到pandas df中的不同列中》

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

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

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

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

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