案例:在多行多列中提取员工名单
如下图所示,希望在多行多列的值班表中,提取出不重复的人员名单。
像案例一样数据较少的时候直接用Excel的公式合并列,或者一列一列地删除重复项也能得出结果,但如果数据有十几列几千行,Excel它就不乐意了,这个时候python的效率就体现了。
首先读取文件。
import pandas as pd
# 读取Excel文件,并将第一列设置为索引
df1 = pd.read_excel('data1.xlsx', index_col=0)
然后三行搞定。
# 将DataFrame中的所有列堆叠成一列
df2 = df1.stack().reset_index(drop=True)
# 将堆叠后的Series对象转换为DataFrame,并命名列
df3 = pd.DataFrame(df2, columns=['员工名单'])
# 删除重复值
df_new = df3.drop_duplicates(subset='员工名单')
# 查看结果
df_new