我有一个像这样的熊猫数据框(可以将人员分配到多个工作部门,这是每个人的姓名以及他们在每个部门完成任务的次数,请注意,“姓名”列没有标题):
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')
...而我只是不明白该示例如何转换为我的示例,特别是因为我不想对部门的数量进行硬编码,因为它会根据情况而变化。