如何使用 Pandas 1.4 中的 concat 将字典添加到 Pandas DataFrame 的一行?

8
更新到 Pandas 1.4 后,当使用 frame.append 将字典附加到 Pandas DataFrame 时,我现在会收到以下警告。
FutureWarning: The frame.append method is deprecated and will be
removed from pandas in a future version. Use pandas.concat instead.

以下是代码。虽然我想解决警告,但这仍然有效。

report = report.append({
                "period":period,
                "symbol":symbol,
                "start_date":start_date,
                "start_price":start_price,
                "start_market_cap":start_market_cap,
                "end_date":end_date,
                "end_price":end_price,
                "end_market_cap":end_market_cap,
                "return":return_
            },ignore_index=True)

我已更新代码如下,会提示另一个警告:

report = pd.concat([report,{
                "period":period,
                "symbol":symbol,
                "start_date":start_date,
                "start_price":start_price,
                "start_market_cap":start_market_cap,
                "end_date":end_date,
                "end_price":end_price,
                "end_market_cap":end_market_cap,
                "return":return_
            }],ignore_index=True)

TypeError: cannot concatenate object of type '<class 'dict'>'; only Series and DataFrame objs are valid

两个问题: 第一个警告是错的吗? 如何使用 pandas 1.4 实现这个功能? 谢谢。


在 pandas 1.4.0 中已被弃用 https://pandas.pydata.org/docs/whatsnew/v1.4.0.html#whatsnew-140-deprecations-frame-series-append - fantabolous
3个回答

9
@fantabolous发布的答案即使在没有列时df为空也可以使用。
import pandas as pd 
df =  pd.DataFrame(columns=[])
data_dict = {"a":0,"b":2742,"c":13.38867188,"d":0}
df = pd.concat([df, pd.DataFrame([data_dict])], ignore_index=True)
df

3
使用 loc 来指定单行数值:
report.loc[len(report)] = {"period":period,
                           "symbol":symbol,
                           "start_date":start_date,
                           "start_price":start_price,
                           "start_market_cap":start_market_cap,
                           "end_date":end_date,
                           "end_price":end_price,
                           "end_market_cap":end_market_cap,
                           "return":return_
                          }

2
report = pd.concat([report, pd.DataFrame([mydict])], ignore_index=True)

在这里,mydict 是您想要添加的行。

append不同,concat不直接支持字典。

append 在 pandas 1.4.0 中已弃用


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接