首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何在一个大熊猫DataFrame中将3列组串联成一个?

我如何在一个大熊猫DataFrame中将3列组串联成一个?
EN

Stack Overflow用户
提问于 2020-06-04 11:21:57
回答 1查看 123关注 0票数 2

例如,我有:

代码语言:javascript
复制
    0 1 2   0 1 2     0     1      2        ...
0 | a c e | r t v | alpha gamma   epsilon   ...
1 | b d f | s u w | beta  delta   zeta      ...

我想要找回:

代码语言:javascript
复制
    0   1     2     ...
0 | a | r | alpha   ...
1 | b | s | beta    ...
2 | c | t | gamma   ...
3 | d | u | delta   ...
4 | e | v | epsilon ...
5 | f | w | zeta    ...

我的DataFrames比这个要大得多,所以最好给出一个通用的解决方案。例如,如果我有300个列,每个列有10000行,那么我想检索每列30000行的100个列。这些文件是通过Fortran代码生成的,在默认情况下,Fortran代码将它们分组为3列。我现在读它们的时候:

代码语言:javascript
复制
    pd.concat((pd.read_csv(file, sep='\s+', header=None, skiprows=0, 
               engine='c', dtype=np.float64, low_memory=False) 
               for file in list_glob), axis='columns')

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-04 13:03:39

让我们试试numpy的reshapetranspose

代码语言:javascript
复制
pd.DataFrame(df.values.reshape(len(df),3,-1)
               .transpose(2,0,1)
               .reshape(3*len(df),-1)
            )

输出:

代码语言:javascript
复制
   0  1        2
0  a  r    alpha
1  b  s     beta
2  c  t    gamma
3  d  u    delta
4  e  v  epsilon
5  f  w     zeta

您可以在连接之前操作从read_csv读取的数据:

代码语言:javascript
复制
pd.concat((pd.read_csv(file, sep='\s+', header=None, skiprows=0, 
                       engine='c', dtype=np.float64, low_memory=False)
             .melt()[['value']]                    # turn each dataframe into single-column one
           for file in list_glob), axis='columns')
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62193390

复制
相关文章

相似问题

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