簡體   English   中英

從一個數據框中獲取列名稱,並將其作為空列添加到pandas的另一個數據框中

[英]Get columns names from one data frame and add them as empty columns in another data frame in pandas

我有一個具有5列的數據幀(df1),還有一個具有10列的數據幀(df2)。 我想將列從df2添加到df1,但僅添加列名稱(無值)。 另外,我想對添加沒有值的列(從df1到df2)執行相同的操作。

以下是數據幀:

DF1

  A      B     C      D     E     
  1      234   52     1     54
  54     23    87     5     125
  678    67    63     8     18
  45     21    36     5     65
  8      5     24     3     13

DF2

  F      G     H      I     J      K      L     M      N     O     
  12     34    2      17    4      19     54    7      58    123
  154    3     7      53    25     2      47    27     84    6
  78     7     3      82    8      56     21    29     547   1

我想得到這個:

DF1

  A      B     C      D     E      F      G      H      I      J      K      L      M      N      O     
  1      234   52     1     54
  54     23    87     5     125
  678    67    63     8     18
  45     21    36     5     65
  8      5     24     3     13

我想得到這個:

DF2

  A       B       C       D      E      F      G     H      I     J      K      L     M      N     O     
                                        12     34    2      17    4      19     54    7      58    123
                                        154    3     7      53    25     2      47    27     84    6
                                        78     7     3      82    8      56     21    29     547   1

我嘗試使用df.columns.values並獲得了列名稱數組,但是隨后我必須將它們應用為數據框列並為其提供空值,而我現在的方式有太多的代碼行,只是想知道這樣做是否更簡單? 我將不勝感激。

Index.unionDataFrame.reindex Index.union使用:

cols = df1.columns.union(df2.columns)
#if order is important
#cols = df1.columns.append(df2.columns)

df1 = df1.reindex(columns=cols)
df2 = df2.reindex(columns=cols)

print (df1)
     A    B   C  D    E   F   G   H   I   J   K   L   M   N   O
0    1  234  52  1   54 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1   54   23  87  5  125 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2  678   67  63  8   18 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
3   45   21  36  5   65 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
4    8    5  24  3   13 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

print (df2)
    A   B   C   D   E    F   G  H   I   J   K   L   M    N    O
0 NaN NaN NaN NaN NaN   12  34  2  17   4  19  54   7   58  123
1 NaN NaN NaN NaN NaN  154   3  7  53  25   2  47  27   84    6
2 NaN NaN NaN NaN NaN   78   7  3  82   8  56  21  29  547    1

如果兩個DataFrame都可以使用相同的索引值,請使用DataFrame.align

print (df1)
     A    B   C  D    E
0    1  234  52  1   54
1   54   23  87  5  125
2  678   67  63  8   18

df1, df2 = df1.align(df2)
print (df1)
     A    B   C  D    E   F   G   H   I   J   K   L   M   N   O
0    1  234  52  1   54 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1   54   23  87  5  125 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2  678   67  63  8   18 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

print (df2)
    A   B   C   D   E    F   G  H   I   J   K   L   M    N    O
0 NaN NaN NaN NaN NaN   12  34  2  17   4  19  54   7   58  123
1 NaN NaN NaN NaN NaN  154   3  7  53  25   2  47  27   84    6
2 NaN NaN NaN NaN NaN   78   7  3  82   8  56  21  29  547    1

暫無
暫無

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

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