合并标头和索引上的数据帧

时间:2017-07-13 21:03:40

标签: python pandas

我有一个数据框df1,其中包含配送中心列表,hq行。我创建了一个新的数据框df2,使用DC_Name作为索引,HQ_line作为标题。我想将df2中的NaN替换为来自df1的相应Field_Line。听起来很简单,但我不确定最佳方法。

DF1

      DC_Name HQ_Line Field_Line
0  Albany, NY     AAC        NAC
1  Albany, NY     AC          AC
2  Albany, NY     ACB        ACK
3  Albany, NY     ACC        NaN
4  Albany, NY     ACE        ACK

DF2

                 AAC  AC   ACB  ACC  ACE  ACO  ACT  ADO  AIT  AKA ...   WWM
Albany, NY       NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN ...   NaN   
Albuquerque, NM  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN ...   NaN   
Altoona, PA      NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN ...   NaN   
Atlanta, GA      NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN ...   NaN   
Birmingham, AL   NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN ...   NaN 

2 个答案:

答案 0 :(得分:4)

示例的输出与输入不匹配。但试试看看它是否适合你:

df.pivot(index='DC_Name',columns='HQ_Line')

答案 1 :(得分:0)

我的建议是简单地使用词典并围绕JSON修改数据集,如果可以的话(或者只是解析文本文件以将数据集构建为python词典)。

伪代码将是:

df1 = [
 {"index" : "Albany, NY", "HQ" : "AAC", "value" : "NAC"},
 #etc.
]

等等:

df2 = {
 "Albany, NY" : {
  "AAC" : None, # None is equiv. to your NaN
  #etc.
 }
}

然后用以下内容构建数据集:

for line in df1:
 index = line['index']
 hq = line['hq']
 value = line['value']
 df2[index][hq] = value