基于lis中的特定值从列表创建数据帧

2024-05-23 19:15:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在帮助我妻子完成一些小学的工作

我有一个excel,看起来像这样:

              score
NameA
test1           10
test2           23
test4           15
NameB
test1           10
test3           17
NameC
etc. 

What I would (ultimately) want is:

           Test1.   Test2.   Test3.   Test4.   etc
NameA.       10       23      Nan       Nan
NameB        10       Nan.     17.      Nan
NameC       
etc

到目前为止,我已经导入了包含所有列的Excel,我想为给定学生的所有测试创建一个列表,但无法让它工作

寻找灵感,欢迎所有建议

马丁



Tags: etcnanexcelwhat妻子scoretest1test2
2条回答

我建议如下:

1.以以下格式在excel中重新构造数据:

   Names   test  score
0  NameA  test1     10
1  NameA  test2     23
2  NameA  test4     15
3  NameB  test1     10
4  NameB  test3     17

2.然后,一个简单的unstack命令就会变魔术

df = df.set_index(['Names','test'])['score'].unstack(-1)
df.index.name = None
df.columns.name = None

print(df)
        test1  test2  test3  test4
NameA   10.0   23.0    NaN   15.0
NameB   10.0    NaN   17.0    NaN

您只需在pandas中更改df的格式

df=df.reset_index()
df['New']=df.A.loc[df.score=='']

df.ffill().loc[df.score!=''].pivot('New','A','score')
Out[406]: 
A     test1 test2 test3 test4
New                          
NameA    10    23  None    15
NameB    10  None    17  None 

相关问题 更多 >