簡體   English   中英

將兩個單獨的數據框之間的對應列組合成新的數據框

[英]Combining corresponding columns between two separate dataframes into new dataframe

我有兩個如下所示的數據框:

df1

Column 1   Column 2  Column 3 
0.2         0.4       0.5 
0.25        0.44      0.45 
0.26        0.32      0.33

df2

Column 1   Column 2  Column 3 
340         350       360
410         400       350
234         324       450

您可以在此處嘗試更理想的訂購方式: Pandas串聯交替的列

但是,如果以所需方式顯式組合數據幀,則讀取代碼會容易得多。

首先聲明新的列名:

dataCols = ['c1', 'c2', 'c3', 'c4', 'c5', 'c6']

然后替換系列:

dataSeries = [df1.Column1, df2.Column1, df1.Column2, df2.Column2, df1.Column3, df2.Column3]

(如果當前列名稱中有空格,請使用df1['Column 1']

然后合並成一個字典並創建一個數據框:

dataDict = dict(list(zip(dataCols, dataSeries)
newDf = pd.DataFrame(dataDict)

這將創建具有交替列的數據框。

要替換任何數據框的列(具有任何可能不相同的列名),請首先組合兩個數據框,然后通過按所需順序傳遞列名列表來對其重新排序。

對於交替順序,首先獲取兩個數據框列名稱的列表

l1 = df1.columns
l2 = df2.columns

然后創建成對的列名,將它們壓縮到兩個列表中(結果為('col1','col1') .... ect。)

colNames = zip(l1, l2)

然后以交替方式與列表理解相結合

combinedNames = [name for pair in colNames for name in pair]

這將創建帶有成對的列名稱的列表。

將此列表應用於合並的數據框以對其重新排序:

combinedDf = combinedDf[combinedNames]

一種更簡單的方法是定義一個新的 DataFrame 並在 for 循環中使用 pandas.DataFrame.append() 函數,以便交替使用 2 個 DataFrame。 然后,您需要轉換新的 DataFrame 以使其正確:

NumColumn=d1.shape[1]

NewDF = pd.DataFrame()
for i in range(NumColumn):
  NewDF = NewDF.append(d1.iloc[:, i])
  NewDF = NewDF.append(d2.iloc[:, i])


NewDF = NewDF.T

暫無
暫無

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

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