Python 如何将数据帧的值用作列,并有选择地将值放入其中?

Python 如何将数据帧的值用作列,并有选择地将值放入其中?,python,pandas,dataframe,Python,Pandas,Dataframe,我刚开始使用熊猫数据帧,实际上我遇到了一个问题 我有一个主字典,它基本上是代码中的一个数据帧,如下所示: A B ATTR VAL AA BB type circular AA BB size 2mm AA BB shape square AA BB tip bend 我将提供一个字符串,该字符串将检查此数据帧,并选择单词并返回一个类似以下内容的输出: A

我刚开始使用熊猫数据帧,实际上我遇到了一个问题

我有一个主字典,它基本上是代码中的一个数据帧,如下所示:

A      B      ATTR      VAL
AA     BB     type      circular
AA     BB     size      2mm
AA     BB     shape     square
AA     BB     tip       bend
我将提供一个字符串,该字符串将检查此数据帧,并选择单词并返回一个类似以下内容的输出:

A     B     type       size   shape   tip
AA    BB    circular   2mm    square  bend
我将对一组庞大的数据执行此操作,但现在我正在对此进行尝试,一旦完成,我将在这个庞大的数据集上应用相同的代码

main_dict = pd.read_excel('File.xlsx')
header = main_dict.iloc[:,0:2]
data = main_dict.iloc[:,2:4]
matr_desc = "AA BB  2mm circular bend".split()

for i,j in enumerate(main_dict['Attribute']):
  for k,l in enumerate(main_dict['Values']):
    print(l)
    header[j][k] = l
在这之后,我陷入了困境,我知道这可能很容易,但由于我是新手,我在构建这一点上有点困难。

您可以使用:

或:

两者都将产生预期的产出。但是,请注意,跨越
A
B
ATTR
列的重复项(即这三列都具有相同值的多行)可能会产生不需要的结果

df.set_index(['A','B', 'ATTR']).unstack('ATTR')
df.pivot_table(index=['A', 'B'], columns='VAL', values='ATTR', aggfunc='first')