从 pandas 数据框中的元组列中删除元素

Posted

技术标签:

【中文标题】从 pandas 数据框中的元组列中删除元素【英文标题】:Remove elements from a column of tuples in a pandas dataframe 【发布时间】:2020-07-31 01:52:39 【问题描述】:

我有一个数据框,其值为字符串或包含多个字符串的元组,如下所示:

           Country                                              Roles  \
0  Shell Record  (DSC Payroll Administrator Reporting, DSC HR S...   
1            PL  (DSC Payroll Administrator Reporting, DSC Payr...   
2            ES  (DSC HR Business Partner Reporting, DSC HR Bus...   
3  Shell Record  (DSC HR Business Partner Reporting, DSC HR Bus...   
4  Shell Record                     DSC BPM Worklist Administrator   

          Role vs Family  
0           Do not match  
1  (Match, Do not match)  
2                  Match  
3           Do not match  
4           Do not match  

有没有一种方法可以删除元组中的值(例如,删除匹配/不匹配,以便列中的值在没有括号的情况下是相同的)。我不想为此使用“替换”(甚至不知道是否可能)。

谢谢!

【问题讨论】:

它可以像 here 那样完成,但是,他们确实使用正则表达式 replace 不起作用,它实际上返回 NaN 值而不是只删除括号 【参考方案1】:

示例数据框:

import pandas as pd
import re
df = pd.DataFrame('col': ['(Match, Do not match)', 'Match', 'Do not match'])
print(df)

之前:

                     col
0  (Match, Do not match)
1                  Match
2           Do not match

此正则表达式应删除列中的所有括号。

df['col'] = df['col'].apply(lambda x: re.sub(r'[(|)]', '', x))
print(df)

之后:

                   col
0  Match, Do not match
1                Match
2         Do not match

【讨论】:

以上是关于从 pandas 数据框中的元组列中删除元素的主要内容,如果未能解决你的问题,请参考以下文章

Pandas 替换列中的值,但 to_replace 参数是包含元组的元组

如何计算包含一组列中的值和 Pandas 数据框中另一列中的另一个值的行数?

遍历 pandas 数据框中的行并匹配列表中的元组并创建一个新的 df 列

pandas 列选择因合并 Excel 列中的元组列名而失败

如何将多个唯一元素附加到Python中的同一组列?

如何从 Pandas 中的两列形成元组列