首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从csv中读取重复或重复的列,并将它们附加到公共列-Pandas中

从csv中读取重复或重复的列,并将它们附加到公共列-Pandas中
EN

Stack Overflow用户
提问于 2021-05-19 04:52:14
回答 1查看 20关注 0票数 0
代码语言:javascript
代码运行次数:0
运行
复制
I have a csv file that look like this.

MONTHS  A     B      C       MONTHS   A       B       C
0   15024   15700   27795       0   22536   23550   41692
1   12415   15700   23001       1   18623   23550   34501
2   10620   15700   19434       2   15930   23550   29151
3   9304    15700   16696       3   13957   23550   25045
4   8296    15700   14542       4   12444   23550   21813

我正在寻找的是附加公共列,它看起来像这样。

代码语言:javascript
代码运行次数:0
运行
复制
 MONTHS A         B       C     D
    0   15024   15700   27795   1
    1   12415   15700   23001   1
    2   10620   15700   19434   1
    3   9304    15700   16696   1
    4   8296    15700   14542   1
    0   22536   23550   41692   2
    1   18623   23550   34501   2
    2   15930   23550   29151   2
    3   13957   23550   25045   2
    4   12444   23550   21813   2

最后一列D只表示它出现的顺序。长的方法是读取特定的列,然后以某种方式重塑这些列。有什么简单的方法可以绕过它吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-19 05:15:49

尝试:

代码语言:javascript
代码运行次数:0
运行
复制
from io import StringIO
import pandas as pd
import numpy as np

csvfile = StringIO("""MONTHS  A     B      C       MONTHS   A       B       C
0   15024   15700   27795       0   22536   23550   41692
1   12415   15700   23001       1   18623   23550   34501
2   10620   15700   19434       2   15930   23550   29151
3   9304    15700   16696       3   13957   23550   25045
4   8296    15700   14542       4   12444   23550   21813""")


df = pd.read_csv(csvfile, sep='\s\s+', engine='python')
df.columns = df.columns.str.split('.', expand=True)
df_out = df.stack(1).rename_axis(['Month', 'D']).reset_index()
df_out['D'] = df_out['D'].fillna(0).astype(int).add(1)
df_out = df_out.sort_values(['D','Month'])
df_out

输出:

代码语言:javascript
代码运行次数:0
运行
复制
   Month  D      A      B      C  MONTHS
0      0  1  15024  15700  27795       0
2      1  1  12415  15700  23001       1
4      2  1  10620  15700  19434       2
6      3  1   9304  15700  16696       3
8      4  1   8296  15700  14542       4
1      0  2  22536  23550  41692       0
3      1  2  18623  23550  34501       1
5      2  2  15930  23550  29151       2
7      3  2  13957  23550  25045       3
9      4  2  12444  23550  21813       4
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67593787

复制
相关文章

相似问题

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