我有一個如下所示的熊貓資料框:
pd.DataFrame({'col1': ['A', 'C'],
'col2': ['A', 'B'],
'col3': ['B', 'B'],
'col4': ['A', 'C'],
'col5': ['C', 'F'],
'col6': ['D', 'D'],
'col7': ['E', 'G'],
'col8': ['E', 'H'] })
col1 col2 col3 col4 col5 col6 col7 col8
A A B A C D E E
C B B C F D G H
我需要生成另一個資料幀,其中每一行是前一個資料幀中每行的前三個唯一值。
所以這就是我需要的。
fea1 fea2 fea3
A B C
C B F
我花了幾個小時卻找不到解決方案。有誰知道如何實作這一目標。提前非常感謝。
uj5u.com熱心網友回復:
在你的情況下unique
df = df.apply(lambda x : pd.Series(x.unique()[:3]),axis=1)
Out[96]:
0 1 2
0 A B C
1 C B F
uj5u.com熱心網友回復:
來自漫長的測驗佇列
pd.DataFrame(df.agg(lambda x: x.unique()[:3], axis=1).to_list(), columns=['fea1' ,'fea2' , 'fea3'])
fea1 fea2 fea3
0 A B C
1 C B F
uj5u.com熱心網友回復:
另一種選擇是drop_duplicates(僅當每行至少有 3 個唯一值時才有效):
out = df.apply(lambda x: x.drop_duplicates().to_numpy()[:3], axis=1, result_type='expand')
對于一般情況:
out = pd.DataFrame(df.apply(lambda x: x.drop_duplicates().to_numpy()[:3], axis=1).tolist())
輸出:
0 1 2
0 A B C
1 C B F
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/450691.html
