我在 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)
或者如果 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/