1
行をループして変更されたデータフレームを返すことによって、関数を通じてデータフレームを修正しようとしました。以下のコードでは、関数 'test'にデータフレーム 'ding'を渡し、すべての行を繰り返して変更したデータフレームを返すことで、新しい列 'C'を作成します。私はtest_ding dfが3つの列を持つことを期待しましたが、2つの列しか見ることができませんでした。どんな助けも高く評価されます。関数内のすべての行をループすることによってデータフレームを変更する
P.S.これは、この小さなタスクを達成するために、他のより簡単な方法を持っている可能性がありますが、私は、行を反復するために探していますし、あなたが上set_value
を使用することができます
s1 = pd.Series([1,3,5,6,8,10,1,1,1,1,1,1])
s2 = pd.Series([4,5,6,8,10,1,7,1,6,5,4,3])
ding=pd.DataFrame({'A':s1,'B':s2})
def test(ding):
for index,row in ding.iterrows():
row['C']=row.A+row.B
return ding
test_ding=test(ding)
私も様々なdtypesを維持するためにitertupleをお勧めします。私は今は言うことができませんが、それは速いと思う。 – piRSquared
私が掲示した方法で割り当てることができない理由は何ですか? 'row ['C'] = row.A + row.B' –
'iterrows'はビューではないコピーを返すので、行に値を代入すると元のデータフレームに効果がありません。これはドキュメンテーションです**反復処理中のものは決して変更しないでください**。 これはすべての場合に機能するとは限りません。 データ型に応じて、イテレータはコピーではなくビューを返します。 を書き込むと効果はありません。 – Psidom