在扁平化数据框列之后,如何有选择地将值放入数据框列中?

时间:2019-05-03 09:29:28

标签: python pandas dataframe

我是刚开始使用熊猫数据框,但实际上我遇到了一个问题。我有一个数据框,看起来像这样:

Name   SubName     ATTR      VAL
GSKT     SW        type      circular
GSKT     SW        size      2mm
GSKT     SW        shape     square
GSKT     SW        tip       bend
GST      WW        shape     square
GST      WW        tip       tilt
GST      WW        size      3mm

我有一个字符串,它将在此数据帧中查找并拾取单词。我用来在数据帧中查找的字符串是这样的:

GSKT SW方形2mm圆形弯头 1st弦

GST WW方形3mm倾斜第二根弦

在给定第一个字符串并在上面提到的数据帧中查找时,我想要得到这样的输出:

Name  SubName    type       size   shape   tip
GSKT    SW       circular   3mm    square  tilt

在给定第二个字符串并通过上述数据框进行查找时,我想获得如下输出:

Name  SubName    type       size   shape   tip
GST    WW        Nan        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

main_dict.pivot_table(index=['Name', 'Subname'], columns='ATTR', 
                                  values='VAL', aggfunc='first')

在此之后,我被困住了,我知道这可能很容易,但是由于我是新手,因此在构造它时遇到了一些困难。

我为此获得的输出被附加在图像部分(Output_heading)中。我需要的输出结构也附在下面的部分中。

基本上基于输入字符串,我需要根据上述数据框找到一个ATTR-VAL对。

示例输出类型也在上面发布,为方便起见再次提及: 第一个字符串:

Name  SubName    type       size   shape   tip
GSKT    SW       circular   2mm    square  bend

第二个字符串:

Name  SubName    type       size   shape   tip
GST    WW        Nan        2mm    square  bend

Output I got from the answer below

enter image description here

1 个答案:

答案 0 :(得分:1)

尝试:

df.ATTR=pd.Categorical(df.ATTR,['type','size','shape','tip'],ordered=True)
df.pivot_table(index=['Name','SubName'],columns=['ATTR'],values='VAL',
                aggfunc='first')

ATTR              type size   shape   tip
Name SubName                             
GST  SAP      circular  2mm  square  bend