Issue
i hava a table like this,and i want to upload xlsx file,dont know where to upload:
姓名 曾贤志 姓名 周志 姓名 黄明芳
性别 男 性别 男 性别 女
部门 管理部 部门 销售部 部门 IT部
工资 2000 工资 3000 工资 4500
姓名 郭城 姓名 刘华平 姓名 张二山
性别 男 性别 女 性别 男
部门 后勤部 部门 销售部 部门 管理部
工资 1800 工资 3600 工资 2400
姓名 梁天 姓名 牛三挺 姓名 洪峰
性别 男 性别 男 性别 男
部门 行政部 部门 财务部 部门 管理部
工资 1800 工资 2000 工资 4200
姓名 求千仞 姓名 龙杰 姓名 林林
性别 男 性别 男 性别 女
部门 财务部 部门 销售部 部门 销售部
工资 2100 工资 2620 工资 1500
desired table like this:
姓名 性别 部门 工资
曾贤志 男 管理部 2000
周志 男 销售部 3000
黄明芳 女 IT部 4500
郭城 男 后勤部 1800
刘华平 女 销售部 3600
张二山 男 管理部 2400
梁天 男 行政部 1800
牛三挺 男 财务部 2000
洪峰 男 管理部 4200
求千仞 男 财务部 2100
龙杰 男 销售部 2620
林林 女 销售部 1500
I am stuck here:
import pandas as pd
df=pd.read_excel('./重新合并列表.xlsx',sheet_name='结果2')
print(df)
print(
df.dropna(how='all')
.dropna(how='all',axis=1)
)
Solution
Example Code
In order to answer this problem, I created a CSV file format string to create a CSV file.
import pandas as pd
import io
csv1 = '''姓名,曾贤志,,姓名,周志,,姓名,黄明芳
性别,男,,性别,男,,性别,女
部门,管理部,,部门,销售部,,部门,IT部
工资,2000,,工资,3000,,工资,4500
,,,,,,,
姓名,郭城,,姓名,刘华平,,姓名,张二山
性别,男,,性别,女,,性别,男
部门,后勤部,,部门,销售部,,部门,管理部
工资,1800,,工资,3600,,工资,2400
,,,,,,,
姓名,梁天,,姓名,牛三挺,,姓名,洪峰
性别,男,,性别,男,,性别,男
部门,行政部,,部门,财务部,,部门,管理部
工资,1800,,工资,2000,,工资,4200
,,,,,,,
姓名,求千仞,,姓名,龙杰,,姓名,林林
性别,男,,性别,男,,性别,女
部门,财务部,,部门,销售部,,部门,销售部
工资,2100,,工资,2620,,工资,1500'''
The following code can be used to load the above text file as a DataFrame for answer. You can use the read_excel
function to load it from an Excel file path.
df = pd.read_csv(io.StringIO(csv1), header=None)
df:
Code
grp = df.isna().all(axis=1).cumsum()
idx = df.iloc[:, 0].dropna().unique()
tmp = df.dropna(how='all').dropna(how='all', axis=1).loc[:, df.iloc[0].ne('姓名')]
out = (pd.concat([df1.set_axis(idx) for _, df1 in tmp.groupby(grp)], axis=1).T
.reset_index(drop=True))
out:
姓名 性别 部门 工资
0 曾贤志 男 管理部 2000
1 周志 男 销售部 3000
2 黄明芳 女 IT部 4500
3 郭城 男 后勤部 1800
4 刘华平 女 销售部 3600
5 张二山 男 管理部 2400
6 梁天 男 行政部 1800
7 牛三挺 男 财务部 2000
8 洪峰 男 管理部 4200
9 求千仞 男 财务部 2100
10 龙杰 男 销售部 2620
11 林林 女 销售部 1500
Answered By - Panda Kim
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.