使用python熊猫转换数据框的格式

时间:2019-02-11 16:49:50

标签: python pandas dataframe

我有一个像这样的熊猫数据框(可以将人员分配到多个工作部门,这是每个人的姓名以及他们在每个部门完成任务的次数,请注意,“姓名”列没有标题):

       dept1   dept2   dept3   dept4   dept5
name1   0       0       0       0      0
name2   1       0       0       0      1
name3   0       1       0       1      0
name4   0       0       0       0      0
name5   0       0       0       0      0 

为了进行后续分析,我必须将格式转换为:

   source  target  value
   name1       dept1      0
   name1       dept2      0
   name1       dept3      0
   name1       dept4      0
   name1       dept5      0
   name2       dept1      1
   name2       dept2      0
   name2       dept3      0
   name2       dept4      0
   name2       dept5      1

我想知道最有效的方法,因为实际上我的桌子很大。

例如,我知道可以遵循以下方法进行操作:

import sys
#get the line with the dept names
header_line = open(sys.argv[1]).readline().split('\t')
#so now I have ['dept1', 'dept2','dept3','dept4','dept5']

for line in open(sys.argv[1]):   
    line = line.strip().split('\t')
    for i in len(line):
        print line[0] + header_line[i] + '\t' + line[i]

我找到了我认为here需要的答案;使用熔体,但是我正在努力实现它。具体来说,因为我的数据可以更改,所以我不想在标头中进行硬编码(例如,有时可能存在dept1或dept1-> dept4,另一个文件可能具有dept1-> dept20),就像在融化示例中所做的那样链接df1 = pd.melt(df, id_vars=['date','County'], var_name='situtation', value_name='score') ...而我只是不明白该示例如何转换为我的示例,特别是因为我不想对部门的数量进行硬编码,因为它会根据情况而变化。

0 个答案:

没有答案