gpt4 book ai didi

python - 使用单行代码合并两个具有不同索引的数据帧,同时保留主数据帧的索引

转载 作者:太空宇宙 更新时间:2023-11-03 10:49:30 25 4
gpt4 key购买 nike

我有两个数据框;第一个 (df1) 是:

df1 = pd.DataFrame({'col1': [0,1], 'col2': [0,1]})
df1 = df1.rename(index = {k:v for k,v in zip([0,1],['zero','one'])})
print(df1)
col1 col2
zero 0 0
one 1 1

第二个(df2)是:

df2 = pd.DataFrame({k:v for k,v in zip(['col'+str(i) for i in range(3,10)],
[[2,3]]*7)
})
print(df2)
col3 col4 col5 col6 col7 col8 col9
0 2 2 2 2 2 2 2
1 3 3 3 3 3 3 3

最终产品 (df3) 应该看起来完全像:

      col1  col2  col3  col4  col5  col6  col7  col8  col9
zero 0 0 2 2 2 2 2 2 2
one 1 1 3 3 3 3 3 3 3

这是我做的方式,这对我来说有点不符合我的口味:

df3 = df1.reset_index(drop = True)
df3 = df3.join(df2.reset_index(drop = True))
df3 = df3.rename(index = {k:v for k,v in zip(df3.index,df1.index)})
print(df3)

是否有任何一行代码可以完成这项工作?谢谢大家

最佳答案

您可以通过 set_indexdf1.index 创建 df2.index ,只需要两个 DataFrames 的长度相同:

df = df1.join(df2.set_index(df1.index))

或者:

df = pd.concat([df1, df2.set_index(df1.index)], axis=1)
print (df)
col1 col2 col3 col4 col5 col6 col7 col8 col9
zero 0 0 2 2 2 2 2 2 2
one 1 1 3 3 3 3 3 3 3

如果像两个 DataFrames 一样有相同长度的列表传递嵌套列表以区分您想要传递列表,而不是列名列表(df2.set_index(L)df2.set_index([' a','b'])):

L = ['a','b']
df = pd.concat([df1.set_index([L]), df2.set_index([L])], axis=1)
print (df)
col1 col2 col3 col4 col5 col6 col7 col8 col9
a 0 0 2 2 2 2 2 2 2
b 1 1 3 3 3 3 3 3 3

关于python - 使用单行代码合并两个具有不同索引的数据帧,同时保留主数据帧的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53763276/

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