当字典中每个键有不同大小的列时,如何让pandas打印到groupby

2024-09-28 01:31:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的列表如下所示:

partlist = [ 'PART1', 'PART2','PART3', 'PART4', 'PART5', 'PART6' ]

然后分析几千个文件,寻找具有这些部件的设备。我可能会得到这样一本字典:

{'hostname1': ['MODEL', 'PART1'], 'hostname2': ['MODEL', 'PART1']}

或:

{'hostname1': ['MODEL', 'PART1', 'PART2', 'PART1', 'PART1', 'PART1', 'PART4' ], 'hostname2': ['MODEL', 'PART1', PART1', 'PART4']}

我的for循环结束于:

(path,file) = os.path.split(device)
create_dictionary()

允许我使用文件名作为与设备主机名匹配的键来创建字典(我能想到的保持键唯一的最简单方法,并允许脚本中的其他功能)

def create_dictionary():
    key = file
    mydict.setdefault(key, [])
    mydict[key].append(model)
    mydict[key].append(part)
    return mydict

然后我有个电话要用熊猫打印

def print_sorted():
    df = pd.DataFrame.from_dict(mydict,'index')
    df.columns=['model', 'part']
    print(df.groupby(['model','part']).size())

但是有了这个pandas调用,如果一个设备的型号比我的parts列表中的146个部件多,并且只有一个部件,这个pandas调用就会退出,并放弃关于轴的长度错误,因为我的字典每个键有2个以上的值

有人知道如何使它允许列/groupby中有任意数量的值,并且知道第一个值始终是设备的模型,之后的任何值都将是一部分吗

事先谢谢你的帮助。这一个已经让我难住了看,所以,随机Python/熊猫网站数周


Tags: pathkeydf列表model字典部件mydict

热门问题