在 MultiIndex 資料框中:
import pandas as pd
a = [['a', 'b', 2, 3], ['c', 'b', 5, 6], ['a','c', 8, 9]]
df = pd.DataFrame(a, columns=['I1', 'I2', 'v1', 'v2'])
df = df.groupby(['I1', 'I2']).first()
我想ex在頂部插入一行并隱藏 MultiIndex 的第一級。預期的結果是

我試過concat:
data_ex = {'v1':[99], 'v2': [98]}
df_ex = pd.DataFrame(data_ex, index = [('ex','ex')])
pd.concat([df_ex, df])
然而它變成

我也嘗試了第一個沒有索引的 concat,然后 groupby 乘以索引。但是 pandas 會自動按 MultiIndex 排序。因此,前行無法設定在頂部。
uj5u.com熱心網友回復:
您需要傳遞正確的索引格式
df_ex = pd.DataFrame(data_ex, index = pd.MultiIndex.from_tuples([('ex','ex')],names=["I1", "I2"]))
pd.concat([df_ex, df])
Out[783]:
v1 v2
I1 I2
ex ex 99 98
a b 2 3
c 8 9
c b 5 6
uj5u.com熱心網友回復:
您需要創建pd.MultiIndex第一個。
import pandas as pd
a = [['a', 'b', 2, 3], ['c', 'b', 5, 6], ['a','c', 8, 9]]
df = pd.DataFrame(a, columns=['I1', 'I2', 'v1', 'v2'])
df = df.groupby(['I1', 'I2']).first()
data_ex = {'v1':[99], 'v2': [98]}
df_ex = pd.DataFrame(data_ex, index = [('ex','ex')])
# create multi-index from the index of tuples
df_ex.index = pd.MultiIndex.from_tuples(df_ex.index)
# name the columns of the multi-index
df_ex.index.names = ["I1", "I2"]
pd.concat([df_ex, df], axis=0)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/479026.html
