我如何应用合并函数或任何其他方法对列A。例如,在外行术语我想转换这个字符串"(A|B|(C、D)|(甲、乙|C级|(d)|(乙)|C级|D)"变成一个"(D A|D和B|(c)|(甲、乙)|阿中|(阿拉伯文、中文和法文)|(乙)|C级|(d)"
此(B|C级|D)将保持不变,因为它没有逗号值合并在它。基本上,我想合并的值是在逗号其余的其他价值观。
我有下面的数据框。
import pandas as pd
data = {'A': [ '(A|B|C,D)|(A,B|C|D)|(B|C|D)'],
'B(Expected)': [ '(D A|D B|D C)|(A B|A C|A D)|(B|C|D)']
}
df = pd.DataFrame(data)
print (df)
我的预期结果见B列(预期)
下面的方法我尝试:-(1)
df['B(Expected)'] = df['A'].apply(lambda x: x.replace("|", " ").replace(",", "|") if "|" in x and "," in x else x)
(二)
# Split the string by the pipe character
df['string'] = df['string'].str.split('|')
df['string'] = df['string'].apply(lambda x: '|'.join([' '.join(i.split(' ')) for i in x]))
1条答案
按热度按时间wlp8pajw1#
可以使用正则表达式提取括号中的值,然后使用带有
itertools.product
的自定义函数重新组织这些值:输出: