86143


特定の行の最大値を調べ、その最大値が存在する行を別のデータフレームにappendさせたいのですが、  
上手くappendできません。どうすればいいのでしょうか？

[code]

    import pandas as pd
    
    df1 = pd.DataFrame({'col1': [0, 3, 2, 3], 'col2': [5, 0, 2, 1]})
    print(df)
    print(df["col2"].idxmax())
    
    df = pd.DataFrame({'col1': [0, 3, 2, 3], 'col2': [4, 0, 2, 1]})
    print(df)
    df.loc[df["col2"].idxmax()]
    
    df1.append(df.loc[df["col2"].idxmax()])
    df1
    
[/code]


CC BY-SA 4.0
2022-02-04T08:01:53.447
86140
2022-02-04T12:40:01.140
2022-02-04T12:40:01.140
3060
51187
question
python pandas
pandasで別のデータフレームへのappendがうまくできません


こちらの仕様や記事を参考に、戻り値を何かに代入する必要があります。  
[pandas.DataFrame.append](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.append.html)

> Returns: DataFrame  
>  A new DataFrame consisting of the rows of caller and the rows of other.

[pandasのappendができない? もとのDataFrameは変更されないので、返り値を使う](https://linus-
mk.hatenablog.com/entry/pandas_append_not_working)

> pandasでDataFrameにappendするとき、連結後のDataFrameは返り値になっている。もとのDataFrameは変更されない。

これではなく：

[code]

    df1.append(df.loc[df["col2"].idxmax()])
    
[/code]

こうする必要があるわけですね。

[code]

    df1 = df1.append(df.loc[df["col2"].idxmax()])
    
[/code]


CC BY-SA 4.0
2022-02-04T08:55:53.640
86143
2022-02-04T08:55:53.640
26370
86140
answer


本題からは外れますが、Pandas version 1.4.0 では以下の様に warning message が表示されます。

[code]

    >>> pd.__version__
    '1.4.0'
    >>> df1.append(df.loc[df["col2"].idxmax()])
    <stdin>:1: FutureWarning: The frame.append method is deprecated and will be
    removed from pandas in a future version. Use pandas.concat instead.
    
[/code]

以下は `append()` を使わない方法です。

[code]

    >>> df1.loc[len(df1)] = df.loc[df["col2"].idxmax()]
    >>> df1
       col1  col2
    0     0     5
    1     3     0
    2     2     2
    3     3     1
    4     0     4
    
[/code]


CC BY-SA 4.0
2022-02-04T09:24:28.810
86146
2022-02-04T09:24:28.810
47127
86140
answer