亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python數據表(或pandas):基于兩列的數據框的棘手排序

Python數據表(或pandas):基于兩列的數據框的棘手排序

白板的微信 2023-12-29 15:38:30
輸入數據from datatable import dtC1 = ['a', 'a', 'b', 'c']C2 = ['b', 'c', 'a', 'a']df1 = dt.Frame(C1=C1, C2=C2)df1:? ?| C1? C2-- + --? --?0 | a? ?b??1 | a? ?c??2 | b? ?a??3 | c? ?a?輸出數據C1 = ['a', 'b', 'a', 'c']C2 = ['b', 'a', 'c', 'a']df2 = dt.Frame(C1=C1, C2=C2)df2:? ?| C1? C2-- + --? --?0 | a? ?b??1 | b? ?a??2 | a? ?c??3 | c? ?a?將數據表對象轉換為 pandas 對象:df = df.to_pandas()問題描述:我盡力讓它盡可能地易于理解。如果出現任何問題,我很樂意解釋更多。示例數據在 C1 和 C2 列中包含唯一值“a”、“b”、“c”。C1 和C2 中的值的每個組合僅出現一次(例如,df1 的第一行中C1 = 'a' & C2 = 'b')。對于大多數組合,都有一個“對”,表示相反的組合(在本例中為上述示例:第三行中的 C1 = 'b' & C2 = 'a')。我如何訂購這個數據框,使所有“對”都彼此相鄰?所需的輸出顯示在 df2 中。我更喜歡使用數據表而不是熊貓。但如果有人在 pandas 中有解決方案,那對我同樣有幫助??磥砦业臉颖緮祿^于簡化。這是一個不太還原的數據集:C1 = ['a', 'a', 'b', 'c']C2 = ['b', 'c', 'a', 'a']Values = [5, 10, 15, 20]df1 = dt.Frame(C1=C1, C2=C2, Values=Values)
查看完整描述

3 回答

?
拉風的咖菲貓

TA貢獻1995條經驗 獲得超2個贊

這是您要找的嗎:


>>> from datatable import dt, f, sort, ifelse

>>> df1 = dt.Frame(C1=['a', 'a', 'b', 'c'], 

                   C2=['b', 'c', 'a', 'a'], 

                   Values=[5, 10, 15, 20])

>>> df1[:, :, sort(ifelse(f.C1<f.C2, f.C1, f.C2), 

                   ifelse(f.C1<f.C2, f.C2, f.C1))]

   | C1  C2  Values

-- + --  --  ------

 0 | a   b        5

 1 | b   a       15

 2 | a   c       10

 3 | c   a       20


[4 rows x 3 columns]

這里我們按 2 個計算列對框架進行排序,第一個是 C1 和 C2 中的最小值,第二個是 C1 和 C2 中的最大值。


查看完整回答
反對 回復 2023-12-29
?
繁花不似錦

TA貢獻1851條經驗 獲得超4個贊

嘗試這個:


import pandas as pd


C1 = ['a', 'a', 'b', 'c']

C2 = ['b', 'c', 'a', 'a']

Values = [5, 10, 15, 20]


df = pd.DataFrame({'C1': C1, 'C2': C2, 'Values': Values})

srt = df.apply(lambda x: ','.join(sorted(x[['C1', 'C2']].values)),axis=1)

df.loc[srt.argsort(),:]


查看完整回答
反對 回復 2023-12-29
?
汪汪一只貓

TA貢獻1898條經驗 獲得超8個贊

轉換為 后pandas,我們可以sort_values嘗試numpy.sort


import numpy as np 

df1 = df1.to_pandas()


out = df1.iloc[pd.DataFrame(np.sort(df1.values,1)).sort_values([0,1]).index]

Out[54]: 

  C1 C2

0  a  b

2  b  a

1  a  c

3  c  a


查看完整回答
反對 回復 2023-12-29
  • 3 回答
  • 0 關注
  • 179 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號