簡體   English   中英

在 Pandas 中合並列並排序

[英]Combine columns and sort in Pandas

例如,假設我有一個包含第 1、2 和 3 列的表。第 1 列包含狗、貓、狗。 我想這樣組合第 2 列和第 3 列

chars = ['column2', 'column3']
csv['combined'] = csv[chars].apply(lambda row: ','.join(row.values.astype(str)), axis=1)

現在假設 column2 在第 1 行包含 a,在第 2 行包含 b,在第 3 行包含 c。假設 column3 在第 1 行包含 b,在第 2 行包含 c,在第 3 行包含 a。我想排序並讓第 1 行顯示up (a, b) 后跟第 3 行,也應該是 (a, c)。 即使我嘗試這樣的 sort_values,我也無法讓第 3 行中的 a 優先:

csv['combined'] = csv['combined'].sort_values()

最終我想按第 1 列分組,然后聚合。 最后我應該看到(dog, a,c), (dog, a,c), and (cat, b, c)

您想按升序對行進行排序。 在這種情況下,您可以嘗試np.sort

cols = ['column2','column3']

df[cols] = np.sort(df[cols], axis=1)

Output:

  column1 column2 column3
0     dog       a       b
1     cat       b       c
2     dog       a       c

希望這會有所幫助,快樂編碼:)

df = pd.DataFrame(data=[['dog','a','b'],['cat','b','c']['dog','c','a']],columns=(['animal','column1','column2']))
print("Actual DataFrame \n")
print(df)

for i in range(len(df)):
  if df.loc[i]['column1']>df.loc[i]['column2']:
      tmp=df.loc[i]['column1'] 
      df.loc[i]['column1'] =df.loc[i]['column2']
      df.loc[i]['column2'] = tmp

print("\n Transformed DataFrame \n")
print(df.sort_values(by='animal',ascending=False))

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM