如何仅使用一个索引连接 2 个数据帧中的索引

时间:2021-05-25 04:01:38

标签: python pandas dataframe

这是我的数据集 Column1 Column2 Column3 0 1 2

df2[0]

我的下一个数据集 Column4 Column5 Column6 203A 206B 207A

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

df1[0].index = df2[0].index

而我所做的是

NoneType' object has no attribute 'index'

和错误信息

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

在那之前,我试试这个

Column1 Column2 Column3 Column4 Column5 Column6 0 NaN NaN NaN 1 NaN NaN NaN 2 NaN NaN NaN 203A NaN NaN NaN 206B NaN NaN NaN 207A NaN NaN NaN

结果

        Column1    Column2    Column3   Column4    Column5    Column6
203A    
206B    
207A    

我的预期输出

dim = msp.add_aligned_dim(
        p1.p, p2.p, distance=2,
        dimstyle='Standard',
        dxfattribs={'layer':'DIM'})
dim.render()

3 个答案:

答案 0 :(得分:1)

让我们从初始阶段开始:

第一种方式:

result=pd.concat([df1, df2],axis=1).dropna(subset=['Column4'])
result.loc[:,df1.columns]=df1.values

第二种方式:

result=pd.concat([df1, df2.reset_index()], axis=1).set_index('index')

第三种方式:

result=df1.copy()
df2=df2.reset_index()
result[df2.columns]=df2
result=result.set_index('index')
df2=df2.set_index('index')

现在如果你打印 result 你会得到你想要的输出

答案 1 :(得分:1)

Idea 是 rename 之前的字典索引值 concat

d = dict(zip(df1[0].index, df2[0].index))
print (d)

pd.concat([df1[0].rename(d), df2[0]], axis=1)

错误意味着列表中有 df1df2 而不是 DataFrame 某些 None 对象,因此所有解决方案都应该失败。

答案 2 :(得分:0)

df1.reset_index(drop=True, inplace=True)
df2.reset_index(drop=True, inplace=True)
frames_all_1 = pd.concat(df1[0], df2[0], axis=1)

尝试先重置索引,然后再连接