如何使用文件中的值填充数据框

How to fill in a dataframe with values from file

我创建了一个包含列名和行的数据框。例如

   a   b   c   d
1 Nan Nan Nan Nan
2 Nan Nan Nan Nan
3 Nan Nan Nan Nan

现在,我想用 tsv 文件中的值填充数据框。我的文件如下:

1  b   80
2  c   90
3  a   60

创建这个

   a   b   c   d
1 Nan 80  Nan Nan
2 Nan Nan 90  Nan
3 60  Nan Nan Nan

我可以使用 pandas 用我文件中的值填充数据框吗?因此,我希望 python 查找正确的行和列并将我的值放在那里。提前致谢!

我觉得你需要pivot with reindex:

df1 = pd.DataFrame(index=[1,2,3], columns=list('abcd'))
print (df1)
     a    b    c    d
1  NaN  NaN  NaN  NaN
2  NaN  NaN  NaN  NaN
3  NaN  NaN  NaN  NaN

print (df2)
   A  B   C
0  1  b  80
1  2  c  90
2  3  a  60

df = df2.pivot(index='A', columns='B', values='C') \
        .reindex(index=df1.index, columns= df1.columns)
print (df)
      a     b     c   d
1   NaN  80.0   NaN NaN
2   NaN   NaN  90.0 NaN
3  60.0   NaN   NaN NaN

unstack 的替代解决方案:

df = df2.set_index(['A','B'])['C'].unstack() \
        .reindex(index=df1.index, columns= df1.columns)
print (df)
      a     b     c   d
1   NaN  80.0   NaN NaN
2   NaN   NaN  90.0 NaN
3  60.0   NaN   NaN NaN

如果 AB 中有重复项,请将 pivot_table 与某些聚合函数一起使用,例如 mean:

print (df2)
   A  B    C
0  1  b   80 <-duplicates for same A, B
1  1  b  100 <-duplicates for same A, B
2  2  c   90
3  3  a   60

df = df2.pivot_table(index='A', columns='B', values='C', aggfunc='mean') \
        .reindex(index=df1.index, columns= df1.columns)
print (df)
      a     b     c   d
1   NaN  90.0   NaN NaN
2   NaN   NaN  90.0 NaN
3  60.0   NaN   NaN NaN

df = df2.groupby(['A','B'])['C'].mean().unstack() \
        .reindex(index=df1.index, columns= df1.columns)
print (df)
      a     b     c   d
1   NaN  90.0   NaN NaN
2   NaN   NaN  90.0 NaN
3  60.0   NaN   NaN NaN