简体   繁体   中英

Pandas dataframe add columns with automatic adding missing indices

I have the following 2 simple dataframes.

df1:

df1

df2:

df2

I want to add df2 to df1 by using something like:

df1["CF 0.3"]=df2

However, this only adds values where indexes in df1 and df2 are the same. I would like a way I can add a column so that missing indexes are automatically added and if there is not associated value of that index, it is filled with NaN. Something like this:

在此处输入图片说明

The way I did this is by writing df1=df1.add(df2)

This adds automatically missing indexes but all values are NaN. Then I manually populated values by writing:

df1["CF 0.1"]=dummyDF1
df1["CF 0.3"]=dummyDF2

Is there an easier way to do this? I have a feeling I am missing something.

I hope you understand my question :)

Use concat refer to this documentation for detailed help.

And here is an example based on the documentation:

import pandas as pd
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
                    'B': ['B0', 'B1', 'B2', 'B3'],
                    'C': ['C0', 'C1', 'C2', 'C3'],
                    'D': ['D0', 'D1', 'D2', 'D3']},
                    index=[0, 1, 2, 3])


df2 = pd.DataFrame({'X': ['A4', 'A5', 'A6', 'A7'],
                    'XB': ['B4', 'B5', 'B6', 'B7'],
                    'XC': ['C4', 'C5', 'C6', 'C7'],
                    'XD': ['D4', 'D5', 'D6', 'D7']},
                     index=[4, 5, 6, 7])


df3 = pd.DataFrame({'YA': ['A8', 'A9', 'A10', 'A11'],
                    'YB': ['B8', 'B9', 'B10', 'B11'],
                    'YC': ['C8', 'C9', 'C10', 'C11'],
                    'YD': ['D8', 'D9', 'D10', 'D11']},
                    index=[8, 9, 10, 11])

#To get the desired result you are looking for you need to reset the index.
#With the dataframes you have you may not be able to merge as well
#Since merge would need a common index or column  
frames = [df1.reset_index(drop=True), df2.reset_index(drop=True), df3.reset_index(drop=True)]

df4 = pd.concat(frames, axis=1)

print df4

看一下concat函数,它在这里可以完成您所需要的工作。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM