我有一个数据帧列表。列表中的每个数据帧都是唯一的,这意味着有一些共享但不同的列。我想创建一个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.
试试这个怎么样:
如果你的指标已经是独一无二的,这不应该伤害他们:
df = df.loc[~df.index.duplicated(keep='first')]
而是确保它们是独一无二的。您可以使用ax
设置为index
来确保标记被用作串联的基础:
df_new = pd.concat(list_of_dfs, axis='index')
你需要在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: 这是我尝试过的代码的等价物: