首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将值插入到已知列熊猫命名的列中

将值插入到已知列熊猫命名的列中
EN

Stack Overflow用户
提问于 2017-04-26 09:14:37
回答 1查看 76关注 0票数 1

我正在为机器学习准备数据,数据在熊猫DataFrame中,如下所示:

代码语言:javascript
复制
Column   v1    v2
first    1      2
second   3      4
third    5      6

现在我想把它转换成:

代码语言:javascript
复制
Column  v1  v2  first-v1  first-v2  second-v1  econd-v2  third-v1  third-v2
first   1   2     1        2         Nan        Nan       Nan      Nan
second  3   4     Nan      Nan       3          4         Nan      Nan
third   5   6     Nan      Nan       Nan        Nan       5        6

我试着做这样的事:

代码语言:javascript
复制
# we know how many values there are but 
# length can be changed into length of [1, 2, 3, ...] values
values = ['v1', 'v2']

# data with description from above is saved in data 
for value in values:
    data[ str(data['Column'] + '-' + value)] = data[ value]

结果是一个名为:['first-v1' 'second-v1'..], ['first-v2' 'second-v2'..]的列,其中有正确的值。我做错什么了?因为我的数据很大,是否有更好的方法来做到这一点?

谢谢您抽时间见我!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-26 09:23:57

您可以使用unstack对列中的MultiIndex进行交换和排序:

代码语言:javascript
复制
df = data.set_index('Column', append=True)[values].unstack()
         .swaplevel(0,1, axis=1).sort_index(1)
df.columns = df.columns.map('-'.join)
print (df)
   first-v1  first-v2  second-v1  second-v2  third-v1  third-v2
0       1.0       2.0        NaN        NaN       NaN       NaN
1       NaN       NaN        3.0        4.0       NaN       NaN
2       NaN       NaN        NaN        NaN       5.0       6.0

stack + unstack

代码语言:javascript
复制
df = data.set_index('Column', append=True).stack().unstack([1,2])
df.columns = df.columns.map('-'.join)
print (df)
   first-v1  first-v2  second-v1  second-v2  third-v1  third-v2
0       1.0       2.0        NaN        NaN       NaN       NaN
1       NaN       NaN        3.0        4.0       NaN       NaN
2       NaN       NaN        NaN        NaN       5.0       6.0

最后一次join到原始:

代码语言:javascript
复制
df = data.join(df)
print (df)
   Column  v1  v2  first-v1  first-v2  second-v1  second-v2  third-v1  \
0   first   1   2       1.0       2.0        NaN        NaN       NaN   
1  second   3   4       NaN       NaN        3.0        4.0       NaN   
2   third   5   6       NaN       NaN        NaN        NaN       5.0   

   third-v2  
0       NaN  
1       NaN  
2       6.0  
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43629853

复制
相关文章

相似问题

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