【发布时间】:2019-03-07 16:04:44
【问题描述】:
我想读取数据帧列表的每一行,并通过附加所有第 N 行来创建一个新的数据帧。
假设我们有以下 DataFrame:
>>> df1
A B C D
0 -0.8 -2.8 -0.3 -0.1
1 -0.1 -0.9 0.2 -0.7
2 0.7 -3.3 -1.1 -0.4
>>> df2
A B C D
0 1.4 -0.7 1.5 -1.3
1 1.6 1.4 1.4 0.2
2 -1.4 0.2 -1.7 0.7
>>> df3
A B C D
0 0.3 -0.5 -1.6 -0.8
1 0.2 -0.5 -1.1 1.6
2 -0.3 0.7 -1.0 1.0
我使用以下方法来获得所需的df:
df = pd.DataFrame()
df_list = [df1, df2, df3]
for i in range(len(df1)):
for x in df_list:
df = df.append(x.loc[i], ignore_index = True)
结果如下:
>>> df
A B C D
0 -0.8 -2.8 -0.3 -0.1
1 1.4 -0.7 1.5 -1.3
2 0.3 -0.5 -1.6 -0.8
3 -0.1 -0.9 0.2 -0.7
4 1.6 1.4 1.4 0.2
5 0.2 -0.5 -1.1 1.6
6 0.7 -3.3 -1.1 -0.4
7 -1.4 0.2 -1.7 0.7
8 -0.3 0.7 -1.0 1.0
我只是想知道是否有一种 pandas 的方式来重写这段代码,它会做同样的事情(可能通过使用 .iterrows、pd.concat、pd.join 或 pd.merge)?
干杯
更新 简单地一个接一个地附加一个 df 不是我在这里寻找的。p>
代码应该做的:
df.row1 = df1.row1
df.row2 = df2.row1
df.row3 = df3.row1
df.row4 = df1.row2
df.row5 = df2.row2
df.row6 = df3.row2
...
【问题讨论】:
-
可能duplicate,那里已经有答案了。
-
注意结果中的行顺序。
-
应该避免在得到答案后编辑代码,因为到时候已经提供了答案,而花在这上面的时间是徒劳的,如果你有版本打开一个新问题!我看到 13 小时前提出的问题,顶部有新版本。
-
@pygo 代码根本没有改变。有很多不相关的答案,所以我想我需要让其他人仔细阅读问题,然后添加回复。标题和代码都没有改变。干杯
标签: python pandas join merge append