如何将相同类别的列置于 pandas 数据框中的单个 header 下?
how to bring same category columns under a single header in a pandas dataframe?
我是 pandas 的新手,很难找到解决这个问题的想法,有人可以帮我解决这个问题。
我有以下格式的源数据框
这里分享生成源数据框的代码:
df = pd.DataFrame({"Employee ID":[1, 2, 3, 4, 5], "Name":["A", "B", "C", "D", "E"],
"Departments":["hr", "hr, manager", "manager", "developer", "tester, manager, developer"],
"Groups":["group-1", "group-2, group-3", "", "", "group-1"]})
打印(df)
我想把它转换成下面的格式
我已经尝试过使用 pivot table 和其他 但它没有多大帮助,有人可以帮助我理解和解决这个问题。
提前致谢:)
您可以将自定义函数与 Series.str.get_dummies
, then if need replace values by columns names add numpy.where
, but first convert columns for not processing to MultiIndex
by DataFrame.set_index
一起使用:
def f(x):
m = x.str.get_dummies(', ').astype(bool)
a = np.where(m, m.columns, '')
return pd.DataFrame(a, columns=m.columns, index=x.index)
df1 = df.set_index(['Employee ID','Name'])
df = pd.concat([f(df1[x]) for x in df1.columns], axis=1, keys=df1.columns)
print (df)
Departments Groups
developer hr manager tester group-1 group-2 group-3
Employee ID Name
1 A hr group-1
2 B hr manager group-2 group-3
3 C manager
4 D developer
5 E developer manager tester group-1
我是 pandas 的新手,很难找到解决这个问题的想法,有人可以帮我解决这个问题。
我有以下格式的源数据框
这里分享生成源数据框的代码:
df = pd.DataFrame({"Employee ID":[1, 2, 3, 4, 5], "Name":["A", "B", "C", "D", "E"],
"Departments":["hr", "hr, manager", "manager", "developer", "tester, manager, developer"],
"Groups":["group-1", "group-2, group-3", "", "", "group-1"]})
打印(df)
我想把它转换成下面的格式
我已经尝试过使用 pivot table 和其他
提前致谢:)
您可以将自定义函数与 Series.str.get_dummies
, then if need replace values by columns names add numpy.where
, but first convert columns for not processing to MultiIndex
by DataFrame.set_index
一起使用:
def f(x):
m = x.str.get_dummies(', ').astype(bool)
a = np.where(m, m.columns, '')
return pd.DataFrame(a, columns=m.columns, index=x.index)
df1 = df.set_index(['Employee ID','Name'])
df = pd.concat([f(df1[x]) for x in df1.columns], axis=1, keys=df1.columns)
print (df)
Departments Groups
developer hr manager tester group-1 group-2 group-3
Employee ID Name
1 A hr group-1
2 B hr manager group-2 group-3
3 C manager
4 D developer
5 E developer manager tester group-1