【问题标题】:How do I append all the rows in my pandas dataframe into one big row?如何将我的 pandas 数据框中的所有行附加到一个大行中?
【发布时间】:2022-01-10 22:21:51
【问题描述】:

我想根据时间列创建新列。 我正在尝试将每行中的最后 5 个值附加到第 0 行,然后使用时间列作为每列的标题。

指数代码日期时间成交量开盘收盘高低

0 AAPL 2022-01-06 09:00 121611 174.78 174.00 175.08 173.76
1 AAPL 2022-01-06 10:00 83471 174.11 173.89 174.64 173.88
2 苹果 2022-01-06 11:00 76327 173.99 173.55 174.25 173.16
3 AAPL 2022-01-06 12:00 83471 174.11 173.89 174.64 173.88

最终我希望它看起来像这样:

代码日期时间 vol9am open9am close9am high9am low9am vol10am open10am close10am high10am low10am

AAPL 2022-01-06 09:00 121611 174.78 174.00 175.08 173.76 83471 174.11 173.89 174.64 173.88

有什么建议吗?

【问题讨论】:

    标签: python arrays pandas dataframe transpose


    【解决方案1】:

    Pandas 的unstack 函数将实现这一点。这将为列名提供多索引;如果你只想要一个单层索引,你可以使用to_flat_index

    df = pd.DataFrame(columns = ['index', 'ticker', 'date', 'time', 'vol', 'open', 'close', 'high', 'low'], 
                data = [
                    [0, 'AAPL', '2022-01-06', '09:00', 121611, 174.78, 174.00, 175.08, 173.76],
                    [1, 'AAPL', '2022-01-06', '10:00', 83471, 174.11, 173.89, 174.64, 173.88],
                    [2, 'AAPL', '2022-01-06', '11:00', 76327, 173.99, 173.55, 174.25, 173.16],
                    [3, 'AAPL', '2022-01-06', '12:00', 83471, 174.11, 173.89, 174.64, 173.88],
                ]
                )
    
    df.set_index(['ticker','date','time'])[['open','close']].unstack()
    

    理想情况下,如果您可以使用一些最低限度的工作代码发布您的问题,那么复制起来会容易得多:)

    【讨论】:

    • 您好,感谢您的回复。我的代码只是从 API 拉取生成数据帧,这就是我没有发布它的原因。您的代码运行良好。现在我只需添加“data = df.values.tolist()”以通过任意数量的基于时间的列表来创建一个巨型行。再次感谢@DaveB。
    • 不用担心 - 如果有帮助,请随时接受答案(绿色勾号):)
    猜你喜欢
    • 2022-11-02
    • 2018-02-12
    • 2018-06-06
    • 2021-10-11
    • 2021-10-09
    • 2021-05-03
    • 2017-10-31
    • 1970-01-01
    • 2019-10-20
    相关资源
    最近更新 更多