我正在对三个数据帧进行concat,代码如下:
df_bigram = pd.concat([bigramFreqTable, skipgram, df2],axis=1)
df_bigramdf_bigram的输出是
bigramf freq Skipgram Freq bigram PMI
0 (Asam, deoksiribonukleat,) 1 (unting, DNA) 22 (12, Å.) 11.487338
1 (deoksiribonukleat,, lebih) 1 (DNA, unting) 22 (22, Å,) 11.487338
2 (lebih, dikenal) 1 (DNA, yang) 20 (220, juta) 11.487338
3 (dikenal, dengan) 2 (yang, DNA) 20 (34, ÅngströmÅ) 11.487338
4 (dengan, singkatan) 1 (DNA, dalam) 13 (A-DNA,, B-DNA,) 11.487338
5 (singkatan, DNA) 1 (dalam, DNA) 13 (Akibatnya,, protein-protein) 11.487338
6 (DNA, ,) 2 (pasangan, basa) 11 (Alec, Jeffreys) 11.487338
7 (,, adalah) 1 (basa, pasangan) 11 (Alfred, HersheyHershey) 11.487338
8 (adalah, sejenis) 1 (terdiri, dari) 10 (Asam, deoksiribonukleat,) 11.487338
9 (sejenis, biomolekul) 1 (dari, terdiri) 10 (Bacillus, subtilis) 11.487338
10 (biomolekul, yang) 1 (pada, DNA) 10 (Banyak, yurisdiksi) 11.487338
... ... ... ... ... ... ...问题是我想按降序排序'freq‘。我只是搞不懂为什么像'Freq‘和'PMI’这样的其他列名,它们是按降序排序的,而'freq‘没有。因此,我对此进行编码以进行排序:
x = df_bigram.sort_values(by='freq', ascending=False)
x输出是这样的:
bigramf freq Skipgram Freq bigram PMI
72 (unting, DNA) 17 (hidrogen, ikatan) 5 (ditranskripsikan., Para) 11.487338
212 (DNA, yang) 15 (satu, pada) 3 (Temperatur, lebur) 10.487338
136 (pasangan, basa) 10 (dalam, ===) 4 (myeloid, akut.) 11.487338
83 (yang, disebut) 9 (rantai, Proses) 5 (gen., Sedangkan) 11.487338
432 (disebut, sebagai) 9 (unting, disebut) 2 (sama., Karenanya,) 9.902375
58 (terdiri, dari) 9 (DNA, memiliki) 6 (darah,, sperma,) 11.487338
525 (Hal, ini) 8 (disebut, satu) 2 (resisten, terhadap) 9.487338
888 (heliks, ganda) 7 (tergulung, lebih) 2 (banyak, kemungkinan) 7.902375
657 (rantai, DNA) 7 (Diplonema, dan) 2 (sebuah, cara) 8.902375
... ... ... ... ... ... ...实际上,我想按降序排列所有的列名,比如'freq','Freq','PMI‘。我做错了什么?
发布于 2020-02-19 19:15:35
问题是,如果无法在最终连接的列中进行排序,则只能对bigram的列和freq进行排序,可能的解决方案是先进行排序,然后主要通过DataFrame.reset_index和drop=True创建默认索引。
df1 = bigramFreqTable.sort_values(by='freq', ascending=False).reset_index(drop=True)
df2 = skipgram.sort_values(by='Freq', ascending=False).reset_index(drop=True)
df3 = df2.sort_values(by='PMI', ascending=False).reset_index(drop=True)
df_bigram = pd.concat([df1, df2, df3],axis=1)发布于 2020-02-19 19:26:23
我认为这可以通过使用原始数据帧列进行重新索引来纠正,如下所示:
df_bigram.reindex_axis(bigramFreqTable.columns,df_bigram =
axis=1)
如果你想按单列排序,那么你上面实现的方法是正确的。但是如果你想按多列排序,你可以试试:
x=df_bigram.sort_values(by=‘频率’,‘频率’,'PMI',ascending=False)
X
注意:-当按多列排序时,pandas sort_value()首先使用第一个变量,然后使用第二个变量。
https://stackoverflow.com/questions/60298499
复制相似问题