インデックスが文字列である2つのパンダデータフレームを次に示します。
df = pd.DataFrame([[1, 2], [3, 4], [5, 6], [7, 8]], columns=list('AB'))
df.index = ['Tax1','Tax2','Tax1','Tax2']
df2 = pd.DataFrame([[0, 0], [1, 1]], columns=list('AB'))
df2.index = ['Tax3','Tax3']
これはdfを与えます:
およびdf2の場合:
df2の行をdfに挿入する簡単な方法はありますか?
インデックス文字列を削除して数値に戻し、df.loc ['k']を使用する必要はありませんか?私が行った中で最も近いのはappendで、これは私が探しているものではなく、dfの最後に2行のdf2を配置します...
あなたはできる:
The code to do it is:
wrk1 = pd.concat([df.iloc[0:2], df.iloc[2:4]], keys=(1, 2))
wrk2 = pd.concat([df2[0:1], df2[1:2]], keys=(1,2))
result = pd.concat([wrk1, wrk2]).sort_index().reset_index(level=0, drop=True)
A detail to consider: The resulting DataFrame contains non-unique entries in the index, so maybe you should leave the top level of the index (your choice).
Let's look at the intermediate results:
wrk1 - first 2 rows from df with index == 1 and second 2 rows with index == 2:
A B
1 Tax1 1 2
Tax2 3 4
2 Tax1 5 6
Tax2 7 8
wrk2-インデックス== 1のdf2の最初の行とインデックス== 2の2番目の行:
A B
1 Tax3 0 0
2 Tax3 1 1
結果を生成するための1つのオプションは、その「不完全な」バージョン(reset_indexなし)です。
pd.concat([wrk1, wrk2]).sort_index()
次の結果が得られます。
A B
1 Tax1 1 2
Tax2 3 4
Tax3 0 0
2 Tax1 5 6
Tax2 7 8
Tax3 1 1
ここでは、2つのレベルのインデックスがあります。
したがって、トップレベルから、特定の行(1番目または2番目のサブセット)の「ソース」が表示され、各行には一意のインデックスがあります。
2番目の(完全な)オプションは次のとおりです。
pd.concat([wrk1, wrk2]).sort_index().reset_index(level=0, drop=True)
それはあなたが望むものを与える:
A B
Tax1 1 2
Tax2 3 4
Tax3 0 0
Tax1 5 6
Tax2 7 8
Tax3 1 1
(最上位の多重指数レベルなし)。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加