pandas concat 的结构与append 的结构不同吗?

问题描述 投票:0回答:1

我阅读了有关此问题的其他帖子,但仍然没有解决我的问题:

见下图。我附加了 4 个相同的行,并对 concat 执行了相同的操作。但结果看起来并不相似。

当我尝试提取一列数据时,结果在视觉上也并不相似。它们是相同的,只是由于某种原因看起来不同,还是我使用错误?所需的结果是来自追加的结果,而不是来自连接的结果。

问题已得到解答,无需任何代码。但这里是我为未来的观众提供的可复制代码:

给定任何 csv 文件:

port pandas as pd

dfdata = pd.read_csv("data.csv")
dfdatanew = pd.DataFrame()

frames = [dfdata.iloc[2],dfdata.iloc[2],dfdata.iloc[2],dfdata.iloc[2]]

dfdatanew = dfdatanew.append(dfdata.iloc[2])
dfdatanew = dfdatanew.append(dfdata.iloc[2])
dfdatanew = dfdatanew.append(dfdata.iloc[2])
dfdatanew = dfdatanew.append(dfdata.iloc[2])

result = pd.concat(frames,axis=0,join='outer')

# compare
print(result)
print(dfdatanew)
python pandas dataframe concatenation append
1个回答
0
投票

您必须在问题中提供清晰的可重现示例,并以代码/数据作为文本。

也就是说,这个错误是相当明显的。您用 iloc 切片

Series
来喂养您的
concat
。因此,您正在串联一个长系列。

使用

.iloc[[2]] 切片

frames
:

frames = [dfdata.iloc[[2]], dfdata.iloc[[2]], dfdata.iloc[[2]], dfdata.iloc[[2]]]
result = pd.concat(frames)

您也可以

concat
axis=1
上的系列并转置,但这会弄乱 dtypes。

注意。我假设这是一个虚拟的例子。如果您确实想重复给定行 4 次,请使用:

result = dfdata.reindex([2]*4)
.

© www.soinside.com 2019 - 2024. All rights reserved.