【问题标题】:pandas append not working; always return empty dataframe熊猫附加不起作用;总是返回空数据框
【发布时间】:2017-09-06 00:48:13
【问题描述】:

我正在尝试按行组合两个表(彼此堆叠,例如在 R 中使用 rbind)。我已按照以下步骤操作:

Pandas version of rbind

how to combine two data frames in python pandas

但是“附加”或“连接”都不适合我。

关于我的数据

我有两个熊猫数据框对象(类型类'pandas.core.frame.DataFrame'),都有 19 列。当我打印每个数据框时,它们看起来很好。

问题

所以我创建了另一个熊猫数据框:

query_results = pd.DataFrame(columns=header_cols)

然后在一个循环中(因为有时我可能会组合不止 2 个表)我正在尝试组合所有表:

for CCC in CCCList:
    query_results.append(cost_center_query(cccode=CCC))

其中 cost_center_query 是一个自定义函数,它返回与 query_results 具有相同列名的 pandas 数据框对象。

但是,有了这个,每当我打印“query_results”时,我都会得到空数据框。

知道为什么会这样吗?也没有错误消息,所以我很困惑。 非常感谢您的任何建议!

【问题讨论】:

  • .append 返回一个新数据框,您需要将其分配给某物,否则结果将被丢弃。
  • 将存储结果附加到变量中后,该变量将保存您想要的值。
  • 注意,在你引用的问题中,接受的答案有bigdata = data1.append(data2, ignore_index=True)
  • 啊!太感谢了!这是一个非常简单的修复!不好意思问这样的初学者问题,但感谢大家的快速帮助!

标签: python pandas


【解决方案1】:

考虑数据帧列表中的concat 方法,它可以避免在循环内通过多个append 调用进行对象扩展。甚至考虑列表理解:

query_results = pd.concat([cost_center_query(cccode=CCC) for CCC in CCCList], ignore_index=True)

【讨论】:

    猜你喜欢
    • 2022-07-22
    • 1970-01-01
    • 2022-11-25
    • 1970-01-01
    • 2017-01-04
    • 2021-11-26
    • 2017-10-14
    • 1970-01-01
    • 2018-10-11
    相关资源
    最近更新 更多