gpt4 book ai didi

python - 尝试将两个数据帧相互连接,但遇到索引值和长度不匹配的问题

转载 作者:行者123 更新时间:2023-12-01 01:08:58 24 4
gpt4 key购买 nike

我有两个数据帧,我想将它们连接在一起。 DF 看起来像:

DF1(3 列,多行,3 个重复项的倍数)

    col1   col2   col3
0 A1 A2 A3
0 A1 A2 A3
0 A1 A2 A3
1 A4 A5 A6
1 A4 A5 A6
1 A4 A5 A6

DF2(6 列,是 2 个列标题的倍数和一个空列,许多行)

    col4  col5 'empty column' col4 col5 'empty column'
0 1 2 3 4
1 5 6 7 8

以下是我已采取的步骤:

1) 将 DF1 转置为:

DF1 = DF1.reset_index().transpose()

我希望转置能够将 3 个重复项与 DF2 的 col4、col5 和空列相匹配

2)连接两个 DF:

DF3 = pd.concat([DF1, DF2], ignore_index=True)
DF3.to_excel('list.xlsx', header=False, index=False)

但是,这将简单地输出 DF1,即使使用 Reset_index,索引也会转置:

0   0   0   1   1   1
A1 A1 A1 A4 A4 A4
A2 A2 A2 A5 A5 A5
A3 A3 A3 A6 A6 A6

我确信我的转置和/或连接错误,但我无法确定哪里。我错过了什么吗?

编辑)

预期输出应该是:

A1    A1    A1    A4    A4    A4
A2 A2 A2 A5 A5 A5
A3 A3 A3 A6 A6 A6
col4 col5 col4 col5
1 2 3 4
5 6 7 8

最佳答案

想法是在每个 DataFrame 中创建相同的列值:

df1 = DF1.reset_index(drop=True).T
df2 = DF2.copy()
df2.columns = np.arange(len(df2.columns))

df = pd.concat([df1, df2], ignore_index=True)
print (df)
0 1 2 3 4 5
0 A1 A1 A1 A4 A4 A4
1 A2 A2 A2 A5 A5 A5
2 A3 A3 A3 A6 A6 A6
3 1 2 NaN 3 4 NaN
4 5 6 NaN 7 8 NaN

如果需要从 DF2 到行之间的列:

df1 = DF1.reset_index(drop=True).T
df2 = DF2.copy()
df2.columns = np.arange(len(df2.columns))

#convert columns to one row DataFrame
df3 = DF2.columns.to_frame().T
df3.columns = np.arange(len(df3.columns))

df = pd.concat([df1, df3, df2], ignore_index=True)
print (df)
0 1 2 3 4 5
0 A1 A1 A1 A4 A4 A4
1 A2 A2 A2 A5 A5 A5
2 A3 A3 A3 A6 A6 A6
3 col4 col5 col4 col5
4 1 2 NaN 3 4 NaN
5 5 6 NaN 7 8 NaN

如果顶部解决方案中需要来自 DF2 的列,则将 df1 的列设置为 DF2 列:

df1 = DF1.reset_index(drop=True).T
df1.columns = DF2.columns

df = pd.concat([df1, DF2], ignore_index=True)
print (df)
col4 col5 col4 col5
0 A1 A1 A1 A4 A4 A4
1 A2 A2 A2 A5 A5 A5
2 A3 A3 A3 A6 A6 A6
3 1 2 NaN 3 4 NaN
4 5 6 NaN 7 8 NaN

解决方案的缺点是获取重复的列名称,因此如果选择一列,则会获取具有重复列名称的所有列:

print (df['col4'])
col4 col4
0 A1 A4
1 A2 A5
2 A3 A6
3 1 3
4 5 7

关于python - 尝试将两个数据帧相互连接,但遇到索引值和长度不匹配的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55037188/

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