连接、合并或联接dataframe以获得新的datafram

2024-03-29 06:55:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python比较陌生,目前正在处理数据帧。假设我有两个具有不同列标题和大小的数据帧。(df1df2)我想将它们连接到一个新的数据帧中,同时将数据帧头转换为一个新行,如组合数据帧中所示。另外,我想将初始列标题名转换为索引。你知道吗

list1 = [('A', ['1','2', '3']),
    ('B', ['4', '5','6']),
    ('C', ['7','8','9'])]

df1 = pd.DataFrame.from_items(list1)

df1

list2 = [('W', ['W1','W2', 'W3']),
    ('X', ['X1','X2', 'X3']),
    ('Y', ['Y1', 'Y2','Y3']),
    ('Z', ['Z1','Z2','Z3'])]

df2 = pd.DataFrame.from_items(list2)

df2

在新数据帧中,在df1之后附加df2头名称的所需组合数据帧输出:

Correct dataframe

我尝试在下面的代码中使用concatenate和merge,但由于它们指定了一个公共列,因此无法获得所需的格式。你知道吗

df_combined = pd.concat([df1,df2], axis = 0)

Wrong df

我在stackoverflow中尝试从以前的答案中寻找可能的解决方案,但没有类似的解决方案。有人吗?真的很感激。你知道吗


Tags: 数据from标题dataframeitems解决方案w1pd
1条回答
网友
1楼 · 发布于 2024-03-29 06:55:07

可以通过range将列名转换为默认值:

df1.columns = range(len(df1.columns))
df2.columns = range(len(df2.columns))
df_combined = pd.concat([df1,df2])

或:

map1 = dict(zip(df1.columns, range(len(df1.columns))))
map2 = dict(zip(df2.columns, range(len(df2.columns))))

df_combined = pd.concat([df1.rename(columns=map1),
                         df2.columns.to_frame().T.rename(columns=map2),
                         df2.rename(columns=map2)], ignore_index=True)
print (df_combined)
    0   1   2    3
0   1   4   7  NaN
1   2   5   8  NaN
2   3   6   9  NaN
3   W   X   Y    Z
4  W1  X1  Y1   Z1
5  W2  X2  Y2   Z2
6  W3  X3  Y3   Z3

相关问题 更多 >