python pandas dataframe union 合并列表到索引

python pandas dataframe union merge list into index

我有一个值列表,我想保证所有值都存在于数据框的索引中。

我已经使用以下方法实现了这一点,但我想知道我可以用更简单的方式做到这一点吗?我尝试了各种 ~ ... .isin 构造,但未能得到我想要的 谢谢

#df1 is my data frame 
df1=pd.DataFrame({'i':[1, 3, 5, 7], 
                 'a':[2, 4, 6, 8]})
df1.set_index(['i'], inplace=True)
df1

# l is the list containing index values
# i make this a data frame with an index but no columns so i can use merge
l=[3, 4, 5]
df=pd.DataFrame(l)
df.set_index([0], inplace=True)
df.index.names=['i']
df

使用合并添加任何缺失的索引值

df1.merge(df, how='outer', on='i', sort=True)

reindexpd.Index.union 一起使用(假设您没有 DataFrame 索引的任何重复值或 l 中的重复值)

import pandas as pd

df1 = pd.DataFrame({'i':[1, 3, 5, 7], 'a':[2, 4, 6, 8]}).set_index('i')
l = [3, 4, 5]

df1 = df1.reindex(df1.index.union(l))
#     a
#i     
#1  2.0
#3  4.0
#4  NaN
#5  6.0
#7  8.0