合并具有相似/相同名称的Pandas DataFrame列(跳过NaN和空单元格)

时间:2019-10-24 10:33:27

标签: python pandas

我将Excel文件与Pandas合并,结果是一个稀疏的数据框,其中包含名称相似或相同的列(例如,某人在标题中输入了错字或称两个相同的列)。我想在跳过NaN和空白单元格的同时合并这些列。

玩具示例:

df = pd.DataFrame(np.array([['Bob', '', np.nan, '2'], [np.nan, 4, 'a lot', '5'], [3, 4, 4, 'a little']]), columns=['column', 'column', 'olumn', 'Something'])

Image

想要:

Image2

我尝试重命名重复的列,以便它们具有相同的名称,并使用带“ not_empty”功能的groupby为nans和空字符串重新使用False,但是合并的列为空,并且调试时很费力。

def not_empty(string):
pattern = re.compile("[A-Za-z0-9]+")
if "nan" in str(string).lower():
    return False
if re.search(pattern, string) is not None:
    return True
else:
    return False


merged_frame = merged_frame.astype(str).groupby(merged_frame.columns, axis=1).agg(lambda x: ';'.join(y for y in x.values if not_empty(y)))

任何帮助将不胜感激!

0 个答案:

没有答案