我有以下Pandasdf
import pandas as pd
df = pd.DataFrame(data={'col1': ["Sun", "Sea:", "SARS-COV-2", "Hong-Kong", "Fish", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"],
'col2': ["Sun", "Sea", ":", "SARS", "-", "COV", "-", "2", 'Hong', '-', 'Kong', 'Fish'],
'col3': ["H", "Q", "S", "X", "Y", "Z", "L", "M", 'A', 'B', 'C', 'O']})
df
col1 | col2 | col3 |
---|---|---|
太阳 | 太阳 | H |
海: | 海 | Q |
SARS-COV-2 | : | S |
香港 | SARS | X |
鱼 | - - | Y |
NaN | COV | Z |
NaN | - - | L |
NaN | 二 | M |
NaN | 洪 | A |
NaN | - - | B |
NaN | 孔 | C |
NaN | 鱼 | O |
我需要对齐col 1和col 2,如df 2所示
df2 = pd.DataFrame(data={'col1': ["Sun","Sea:", "SARS-COV-2", "Hong-Kong", "Fish"],
'col2': ["Sun", "Sea:", "SARS-COV-2", "Hong-Kong", "Fish"],
'col3': ["H", "Q", "X", "A",'O']})
df2
col1 | col2 | col3 |
---|---|---|
太阳 | 太阳 | H |
海: | 海: | Q |
SARS-COV-2 | SARS-COV-2 | X |
香港 | 香港 | A |
鱼 | 鱼 | O |
也就是说,我必须递归地合并col 2的字符串,直到与col 1匹配,同时保留第一个col 3值
我最初的方法是使用嵌套循环,但它变得非常混乱。
有什么想法吗?先谢了
1条答案
按热度按时间6mzjoqzu1#
您可以将
col1
拆分为非字母数字字符'\W'
,以获得与col2
相同的输出:输出: