2016-04-26 14 views
5

簡単で実用的な質問ですが、解決策が見つかりません。pandas DataFrameの行を他の複数の行にコピーする

Modifying a subset of rows in a pandas dataframe

Changing certain values in multiple columns of a pandas DataFrame at once

Fastest way to copy columns from one DataFrame to another using pandas?

Selecting with complex criteria from pandas.DataFrame

たものと私の主な違いは、私は必要がないということです。

私は見ていた質問は以下の通りでした単一の値ではなく行を挿入します。

私の問題は、私はデータフレームの行をピックアップすると言う、df1です。私はシリーズを持っています。

今度は、この他のデータフレームdf2があり、基準に従って複数の行が選択されており、そのシリーズをすべての行に複製したいと考えています。

DF1:

Index/Col A B C 
1   0 0 0 
2   0 0 0 
3   1 2 3 
4   0 0 0 

DF2:ラインへ

Index/Col A B C 
1   0 0 0 
2   0 0 0 
3   0 0 0 
4   0 0 0 

私は何を達成したいことはDF1を挿入している[3]は、たとえば[3] [2]とDF3をDF2。だから、非作業コードのようなもの:

DF2返す

series = df1[3] 
df2[df2.index>=2 and df2.index<=3] = series 

Index/Col A B C 
1   0 0 0 
2   1 2 3 
3   1 2 3 
4   0 0 0 

答えて

7

使用locをし、次のコンマ:は我々を示した後、関心のインデックスラベルのリストを渡しますすべての列の値を設定したい場合は、系列を割り当てますが、数値属性の配列になるように.valuesという属性を呼び出します。そうしないとあなたは、単一の行と2行を上書きしようとしているような形状の不一致があるだろうとして、あなたはValueErrorを取得し、それがその後、Seriesをだならば、それはあなたが望むよう揃わないだろう。

In [76]: 
df2.loc[[2,3],:] = df1.loc[3].values 
df2 

Out[76]: 
    A B C 
1 0 0 0 
2 1 2 3 
3 1 2 3 
4 0 0 0 
+0

okです。いくつかの質問は、それがシリーズの場合は右側が動作しますか?条件付き選択が考慮されるように編集できますか? –

+0

いいえ、あなたが 'ValueError'シェイプの不一致を得ようとしたとしたら、私は述べました。同じ形状の 'Series'を渡して、インデックス値が – EdChum

+0

と一致した場合にのみ動作します。ありがとう! –

0

はあなたを想定します特定の行と列をデータフレームから別のデータフレームにコピーする必要があります。 code

df2 = df.loc[x:y,a:b] // x and y are rows bound and a and b are column 
           bounds that you have to select 
関連する問題