当前位置: 首页 > 知识库问答 >
问题:

从列表创建数据框并保留重复项[重复]

戈嘉慕
2023-03-14

我有一个数据帧列表。列表中的每个数据帧都是唯一的,这意味着有一些共享但不同的列。我想创建一个dataframe,它包含dataframe列表中的所有列,如果元素不存在,它将填充NaN。我试过以下方法

import pandas as pd
df_new = pd.concat(list_of_dfs)
#I get the following: InvalidIndexError: Reindexing only valid with uniquely valued Index objects

问题似乎是由于列表中的数据帧造成的。每个数据帧只有一行,因此其索引为零,因此重新编制索引不会起作用。我试过这个:

 list_of_dfs.append(pd.DataFrame([rows], columns = tags).set_index(np.array(random.randint(0,5000))))

几乎生成一个随机数作为索引。但是,要获得此错误,请执行以下操作:

ValueError: The parameter "keys" may be a column key, one-dimensional array, or a list containing only valid column keys and one-dimensional arrays.

共有2个答案

景品
2023-03-14

试试这个怎么样:

如果你的指标已经是独一无二的,这不应该伤害他们:

df = df.loc[~df.index.duplicated(keep='first')]

而是确保它们是独一无二的。您可以使用ax设置为index来确保标记被用作串联的基础:

df_new = pd.concat(list_of_dfs, axis='index')
宰父衡
2023-03-14

你需要在pd.concat中使用一些参数:

import pandas as pd

df1 = pd.DataFrame({'a':[1,2,3],'x':[4,5,6],'y':[7,8,9]})
df2 = pd.DataFrame({'b':[10,11,12],'x':[13,14,15],'y':[16,17,18]})

print(pd.concat([df1,df2], axis=0, ignore_index=True))

结果:

     a   x   y     b
0  1.0   4   7   NaN
1  2.0   5   8   NaN
2  3.0   6   9   NaN
3  NaN  13  16  10.0
4  NaN  14  17  11.0
5  NaN  15  18  12.0

所以,像这样使用concat:

pd.concat(list_of_dfs, axis=0, ignore_index=True)
 类似资料:
  • 我有一个列表,我想创建一个名为的扩展。 我不想覆盖,因此不能使用append、extend或insert。我想知道是否有一个快速的方法来完成这项工作(比使用理解列表或Deep.copy更快)

  • 我有一个包含18个数据帧的列表: 所有数据帧都有一个公共id列,因此很容易将它们与pd连接在一起。一次合并2个。有没有一种方法可以一次将它们连接起来,从而使dfList作为单个数据帧返回?

  • 我有这样的df: 如何将转换为元组列表并分配给变量?然后创建一个只有col4的数组并赋值给变量? 示例最终结果:

  • 我有一份这种格式的清单 我想用这些信息创建一个数据框架,其中一个列名为“情绪”,另一个列名为“分数” 数据帧: 我不知道如何将我的列表转换为具有这种结构的数据格式

  • 我有一个数据框 我有另一个数据帧df2 我希望我的最终数据帧看起来像: i、 e从一个数据帧映射到另一个数据帧,创建新列

  • 我想将tblA的唯一值添加到tblB中,而不会基于多个字段创建重复值。在以下示例中,FirstName和LastName确定重复项,Foo和Source无关。 tblA: tblB: 这是我想要的结果: tblA: 这是我尝试过的代码的等价物: