gpt4 book ai didi

python - 根据每个单独数据帧的行索引(编号)连接/加入/合并多个数据帧

转载 作者:行者123 更新时间:2023-11-28 22:15:49 24 4
gpt4 key购买 nike

我想读取 DataFrame 列表的每第 n 行,并通过 append 所有第 N 行来创建一个新的 DataFrame。

假设我们有以下 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)?

干杯

更新简单地一个接一个地 append df 不是我在这里寻找的。

代码应该做的:

df.row1 = df1.row1
df.row2 = df2.row1
df.row3 = df3.row1
df.row4 = df1.row2
df.row5 = df2.row2
df.row6 = df3.row2
...

最佳答案

对于单个输出数据帧,您可以按索引连接和排序:

res = pd.concat([df1, df2, df3]).sort_index().reset_index(drop=True)

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

对于数据框的字典,您可以连接然后按索引分组:

res = dict(tuple(pd.concat([df1, df2, df3]).groupby(level=0)))

使用上面定义的字典,每个值代表一个行号。例如,res[0] 将给出每个输入数据帧的第一行。

关于python - 根据每个单独数据帧的行索引(编号)连接/加入/合并多个数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52609858/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com