簡體   English   中英

一次將多列添加到多索引 Pandas 數據框

[英]Add multiple columns at once to multiindex Pandas dataframe

我有一個數據框多索引熊貓數據框df

First    Foo     Bar
Second   Begin   Begin
1        5       1
2        4       4
3        6       6

我想添加兩列同名

First    Foo             Bar
Second   Begin   End     Begin   End
1        5       1       1       2       
2        4       5       4       4       
3        6       7       6       7       

從這個來源( new ):

First    Foo    Bar
1        1      2
2        5      4
3        7      7

我試過df[:] = new[:]但這只返回 NaN

另一種方法是使用類似 for 循環的方法,但這不是 Pandas 的方法。 在網上搜索並沒有給我任何解決這個問題的見解。

如何將具有相同名稱和形狀的新列添加到多索引 Pandas 數據框的每個第一級?

編輯:

這種方法df[('Foo', 'End')] = new['Foo'] df[('Bar', 'End')] = new['Bar']不是一個選項,因為在我的實際問題中有不是要添加兩列,而是數百列。

  • 多列名稱作為Tuples傳遞,例如df[('Foo', 'End')]
import pamadas as pd

# test data
col = pd.MultiIndex.from_arrays([['Foo', 'Bar'], ['Begin', 'Begin']], names=['First', 'Second'])
df = pd.DataFrame([[5, 1], [4, 4], [6, 6]], columns=col)
new = pd.DataFrame({'Foo': [1, 5, 7], 'Bar': [2, 4, 7]})

# write new columns
df[('Foo', 'End')] = new['Foo']
df[('Bar', 'End')] = new['Bar']

# display(df)
First    Foo   Bar Foo Bar
Second Begin Begin End End
0          5     1   1   2
1          4     4   5   4
2          6     6   7   7

對於許多列

  • colnew列名,必須對應於df的頂級列名。
for col in new.columns:
    df[(col, 'new col name')] = new[col]

暫無
暫無

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

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