Python连接和排序3数据帧

Python连接和排序3数据帧,python,pandas,dataframe,sorting,concatenation,Python,Pandas,Dataframe,Sorting,Concatenation,我在三个数据帧上进行concat,代码如下: df_bigram = pd.concat([bigramFreqTable, skipgram, df2],axis=1) df_bigram bigramf freq Skipgram Freq bigram PMI 72 (unting, DNA) 17 (hidrogen, ikatan)

我在三个数据帧上进行concat,代码如下:

df_bigram = pd.concat([bigramFreqTable, skipgram, df2],axis=1)
df_bigram
                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
...          ...           ...            ...          ...                 ...                ...
df_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
输出结果如下所示:

df_bigram = pd.concat([bigramFreqTable, skipgram, df2],axis=1)
df_bigram
                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'。我做错了什么?

问题是,如果无法在最终联接列中进行排序,则只能对成对的
bigram
s列和
freq
进行排序,可能的解决方案是首先进行排序,并主要通过使用
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)

问题是,如果无法在最终联接的列中进行排序,则只能对
bigram
s列和
freq
进行排序,可能的解决方案是首先进行排序,主要是使用
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)

我认为这可以通过如下方式使用原始dataframe列重新编制索引来纠正:

df_bigram=df_bigram.reindex_轴(bigramFreqTable.columns,轴=1)

如果您想按单列排序,那么您上面实现的是正确的。但如果要按多列排序,则可以尝试:

x=df_bigram.sort_值(按=['freq','freq','PMI',升序=False)

x


注意:-按多列排序时,pandas sort_value()首先使用第一个变量,然后使用第二个变量。

我认为可以通过使用原始数据帧列重新编制索引来纠正这一问题,如下所示:

df_bigram=df_bigram.reindex_轴(bigramFreqTable.columns,轴=1)

如果您想按单列排序,那么您上面实现的是正确的。但如果要按多列排序,则可以尝试:

x=df_bigram.sort_值(按=['freq','freq','PMI',升序=False)

x

注意:-按多列排序时,sort_value()首先使用第一个变量,然后使用第二个变量