【问题标题】:rbindlist equivalent R's function in pythonrbindlist 在 python 中等效 R 的函数
【发布时间】:2019-02-09 07:42:05
【问题描述】:

首先,我根据 num_vars 的长度创建空列表,并将每个循环的输出存储在一个列表中。 之后我想组合所有输出并将其转换为熊猫数据框。

为此,我们可以简单地在 R 中使用 rbindlist 来组合列表对象。

为此,我使用了以下 python 代码。

ests_list=[[] for i in range(num_vars)]

for i in list(range(0,num_vars)):
    for j in list(range(1,num_vars+1))
        ests_list[i]=pd.merge(df1,
                              df2,
                              how='left',
                              on=eval('combine%s'%j+'_lvl'))

pd.concat(ests_list)

当我尝试上述语法时,它会引发以下错误:

TypeError: cannot concatenate object of type "<class 'list'>"; only 
pd.Series, pd.DataFrame, and pd.Panel (deprecated) objs are valid

请任何人都可以帮助我解决这个问题。

提前致谢。

【问题讨论】:

  • 我认为你的 i 范围应该是从 0 到 num_vars 而不是 1 到 num_vars+1。 ests_list 的第零个元素仍然是一个列表。
  • 不,如果我填写了该列表,它也会给我同样的错误。你能再检查一次吗。
  • 请出示调整后的代码。
  • 是的,我更新了上面的代码。请您对此做出结论。
  • 你对 j 的循环没有意义。修改名单是否还有其他遗漏?请初始化 ests_lists = list() 并使用 ests_lists.append 在循环中添加元素。

标签: python pandas list concat


【解决方案1】:

我找到了解决问题的方法:

ests_list=[]
for i in list(range(1,num_vars)):
    ests_list.append(df1.merge(df2,how='left',on=eval("combine%s"%i+"_lvl")))
pd.concat(ests_list)

我正在创建一个空列表,并将每个循环输出添加到其中。

然后我使用 pd.concat 函数组合所有列表,因此它以 pandas 数据框格式为我提供输出。

【讨论】:

    猜你喜欢
    • 2021-04-13
    • 2020-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-16
    • 2018-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多