我有一个字典,看起来像这样,值是相同数量的索引列表。它是构造一个熊猫数据框架。我想要得到这些列表中每个索引的最大值的键名。(例如,这些列表的第一个索引为0.00023478,第四个索引为0.23849287)。我试图将其转换为一个熊猫数据框架,然后找到最大索引,但这需要太多的时间,因为我正在处理太多的数据。我需要找到特定索引的最大值,然后在将字典转换为数据帧之前返回键。
{'DT': [0, 0, 0, 0, 0, 0, 0, 0], 'NN': [0.00023478, 0, 0, 0, 0, 0, 0, 0],
'POS': [0, 0, 0, 0.000192837, 0, 0, 0, 0], 'MD': [0, 0, 0, 0, 0, 0, 0, 0],
'VB': [0, 0, 0, 0, 0, 0, 0, 0], 'VBN': [0, 0, 0, 0, 0, 0, 0, 0],
'IN': [0.0000028945, 0, 0, 0, 0, 0, 0, 0], 'JJ': [0, 0, 0, 0, 0, 0, 0, 0],
'NNS': [0, 0, 0, 0, 0, 0, 0, 0], 'CC': [0, 0, 0, 0.23849287, 0, 0, 0, 0],
'RBS': [0, 0, 0, 0, 0, 0, 0, 0], 'NNP': [0, 0, 0, 0, 0, 0, 0, 0],
'VBZ': [0, 0, 0, 0, 0, 0, 0, 0], 'TO': [0, 0, 0, 0, 0, 0, 0, 0]}
for i in range(len(test)): # how many sentence
list1 = [[0 for x in range(len(test[i]))] for y in range(len(pos_list))]
q = dict(zip(pos_list, list1))
for j in range(len(test[i])):
用max
dict.get
关键:
max(data, key=data.get)
或与DataFrame.idxmax
:
df.idxmax(1)
将您的字典转换为DataFrame
:
df = pd.DataFrame(d)
print(df)
# Output:
DT NN POS MD VB VBN IN JJ NNS CC RBS NNP VBZ TO
0 0 0.000235 0.000000 0 0 0 0.000003 0 0 0.000000 0 0 0 0
1 0 0.000000 0.000000 0 0 0 0.000000 0 0 0.000000 0 0 0 0
2 0 0.000000 0.000000 0 0 0 0.000000 0 0 0.000000 0 0 0 0
3 0 0.000000 0.000193 0 0 0 0.000000 0 0 0.238493 0 0 0 0
4 0 0.000000 0.000000 0 0 0 0.000000 0 0 0.000000 0 0 0 0
5 0 0.000000 0.000000 0 0 0 0.000000 0 0 0.000000 0 0 0 0
6 0 0.000000 0.000000 0 0 0 0.000000 0 0 0.000000 0 0 0 0
7 0 0.000000 0.000000 0 0 0 0.000000 0 0 0.000000 0 0 0 0
然后使用max
的列轴:
>>> df.max(axis='columns')
0 0.000235
1 0.000000
2 0.000000
3 0.238493
4 0.000000
5 0.000000
6 0.000000
7 0.000000
dtype: float64
知道索引键和idxmax
:
>>> df.idxmax(axis='columns')
0 NN
1 DT
2 DT
3 CC
4 DT
5 DT
6 DT
7 DT
dtype: object