首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫数据整合2栏

熊猫数据整合2栏
EN

Stack Overflow用户
提问于 2017-09-22 13:02:20
回答 2查看 352关注 0票数 2

我有这样一个datatable:

代码语言:javascript
复制
Run, test1, test2
1, 100, 102.
2, 110, 100.
3, 108, 105.

我希望这两栏合并如下:

代码语言:javascript
复制
Run, results
1, 100
1, 102
2, 110 
2, 100 
3, 108 
3, 105

在潘达斯我该怎么做?非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-22 13:04:25

stack结合Multiindex按双reset_index

代码语言:javascript
复制
df = df.set_index('Run').stack().reset_index(drop=True, level=1).reset_index(name='results')
print (df)
   Run  results
0    1    100.0
1    1    102.0
2    2    110.0
3    2    100.0
4    3    108.0
5    3    105.0

melt

代码语言:javascript
复制
df = df.melt('Run', value_name='results').drop('variable', axis=1).sort_values('Run')
print (df)
   Run  results
0    1    100.0
3    1    102.0
1    2    110.0
4    2    100.0
2    3    108.0
5    3    105.0

numpy.repeat的Numpy解

代码语言:javascript
复制
a = np.repeat(df['Run'].values, 2)
b = df[['test1','test2']].values.flatten()

df = pd.DataFrame({'Run':a , 'results': b}, columns=['Run','results'])
print (df)
   Run  results
0    1    100.0
1    1    102.0
2    2    110.0
3    2    100.0
4    3    108.0
5    3    105.0
票数 2
EN

Stack Overflow用户

发布于 2017-09-22 13:55:15

我就是这样实现这一目标的

备选案文1

wide_to_long

代码语言:javascript
复制
pd.wide_to_long(df,stubnames='test',i='Run',j='LOL').reset_index().drop('LOL',1)
Out[776]: 
    Run   test
0    1  100.0
1    2  110.0
2    3  108.0
3    1  102.0
4    2  100.0
5    3  105.0

注意:在这里,我没有将列名从test更改为结果,我认为使用test作为新的列名在您的情况下更好。

选项2

代码语言:javascript
复制
pd.concat

df=df.set_index('Run')
pd.concat([df[Col] for Col in df.columns],axis=0).reset_index().rename(columns={0:'results'})

Out[786]: 
   Run  results
0    1    100.0
1    2    110.0
2    3    108.0
3    1    102.0
4    2    100.0
5    3    105.0
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46365490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档