猿问

删除任何行中没有内容的列并删除相应的列

我想删除任何行中没有内容的列,并删除以相同名称开头的其他列。


在此示例中,应删除Line of Business > Organization,因为所有行中只有空白。由于此列已删除,所有其他以“业务线 >”开头的列也应从 pandas 数据框中删除。完整的数据框遵循[some text] > [Organization/Department/Employees]相同的结构。


data = pd.DataFrame({'Process name': {0: 'Ad campaign', 1: 'Payroll', 2: ''},

                   'Line of business > Organization': {0: "", 1: "", 2:''},

                   'Line of business > Department': {0: "Social media", 1: "People", 2:''},

                   'Line of business > Employees': {0: "Linda, Tom", 1: "Manuel, Olaf", 2:''}})

结果:


output = pd.DataFrame({'Process name': {0: 'Ad campaign', 1: 'Payroll', 2: ''}})


猛跑小猪
浏览 85回答 1
1回答

MMTTMM

我希望我能正确理解这个案例,但我想你可以试试这个:首先,用 NaN 替换空的“”值:data.replace('', np.nan, inplace=True)然后,像这样识别空列:empty_cols = [col for col in data.columns if data[col].isnull().all()]接下来,确定要删除的列。(这假定“>”是与识别此相关的文本的分隔符)。delete_cols= [col for col in data.columns for empty_col in empty_cols if col.split('>')[0] == empty_col.split('>')[0]]最后,删除不需要的列并从剩余的列中删除空值:data = data.drop(delete_cols, axis=1).dropna()
随时随地看视频慕课网APP

相关分类

Python
我要回答