如何从另一个数据框中获取公共列的值?

时间:2018-05-23 05:41:14

标签: python-3.x pandas dataframe

我有一些空数据框,包含一些列

df_skeleton = pd.DataFrame(columns=columns)

我有另一个数据帧df是上面数据帧的子集,但在这个数据帧中,我有一行数值。

我想将第二个数据帧的相应值放入

df_skeleton 

和所有其他列值等于零

例如:

df_skeleton有10列,名字来自col1,col2 ..... col10,

   col1   col2 col3 col4 col5 col5 co6 col7 col8 col9 col10
0

但它不包含任何行或值。它只是骨架。

我的df有3列

      col1 col3 col7
 0    23    45   10

现在我想要的是

df_skeleton

  col1 col2 col3 col4 col5 col6 col7 col8 col9 col10
0  23   0    45   0    0    0    10   0    0    0

2 个答案:

答案 0 :(得分:4)

使用reindex参数fill_value

columns = ['col1','col2','col3','col4','col5','col5','co6','col7','col8','col9','col10']
df_skeleton = pd.DataFrame(columns=columns)

df = df.reindex(columns=df_skeleton.columns, fill_value=0)
print (df)
   col1  col2  col3  col4  col5  col5  co6  col7  col8  col9  col10
0    23     0    45     0     0     0    0    10     0     0      0

答案 1 :(得分:4)

使用https://docs.microsoft.com/en-us/sql/relational-databases/tables/lesson-1-1-examining-the-current-structure-of-the-employee-table?view=sql-server-2017

df_skeleton.combine_first(df).fillna(0, downcast='infer')

   co6  col1  col10  col2  col3  col4  col5  col5  col7  col8  col9
0    0    23      0     0    45     0     0     0    10     0     0