web-dev-qa-db-ja.com

python / pandasのシリーズに追加が機能しない

pandas n番目の要素とn番目の要素+ 1要素の違いを見つけることによって得られる系列に値を追加しようとしています:

q = pd.Series([])

while i < len(other array):
    diff = some int value
    a = pd.Series([diff], ignore_index=True)
    q.append(a)
    i+=1

私が得る出力は:

Series([], dtype: float64)

値がすべて追加された配列を取得できないのはなぜですか?

-

追伸これはデータサイエンスの質問であり、データフレームを検索して、郡が最も多い州を見つける必要があります。 1つの州が終了し、次の州が始まるインデックス値(違いを見つけるために使用している配列内の値)を使用して、その州にある郡の数を決定しています。私よりも上でこの問題を解決する方法を誰かが知っているなら、知らせてください!

14
Nick

appendメソッドはインプレースでは機能しません。代わりに、新しいSeriesオブジェクトを返します。だからそれはする必要があります:

q = q.append(a)

それが役に立てば幸い!

55
cdonts

Series.appendのドキュメントには、このフレームの終わりまで append otherの行があり、新しいオブジェクトが返されると記載されています。

例は機能しているように見えるので少し混乱していますが、よく見ると、インタラクティブpythonを使用しています。これにより、最後の呼び出し(新しいオブジェクト)の結果が出力されます)元のオブジェクトを表示するよりも。

Appendを呼び出した結果は、実際には新しい Series です。

あなたの例では、.appendによって返される新しいオブジェクトに毎回qを割り当てる必要があります:

q = pd.Series([])
while i < len(other array):
    diff = some int value
    a = pd.Series([diff], ignore_index=True)
    # change of code here
    q = q.append(a)
    i+=1
1
Rishab P.