【问题标题】:Is there a way to transpose all CSV column values on top of rows, with pandas, python, or excel? (column 1 = row 1, column 2 = row 2)有没有办法使用 pandas、python 或 excel 在行顶部转置所有 CSV 列值? (第 1 列 = 第 1 行,第 2 列 = 第 2 行)
【发布时间】:2019-09-22 18:32:52
【问题描述】:

我需要获取 csv 文件的每一列,并将其设置为行,因为 (x,y) 处的每个值在 (y,x) 处都相同。似乎很容易,但我不断收到错误。 [沿水平方向的单面数据图像][1] 我尝试使用 df.iat 和其他几个 pandas 方法(包括 iloc)进行解析,将列转换为列表对象,然后尝试将列表对象设置在索引行中,转置(都在 python 中通过 pandas,并且擅长时间)

    # Set to 5 just to verify that it does not erase old data, but adds new
    # true range is 10,000 x 10,000
    for x in range(1,5):
        for y in range(x+1,5):
            a = float(toParse.iat[y,x])
            toParse.iat[x,y] = a

# Data beforehand 
data = {'1': [None,None,None,None,None],
        '2': ['0.6',None,None,None,None],
        '3': ['0.93','1.01',None,None,None],
        '4': ['0.22','0.124','.134',None,None],
        '5': ['0.77','0.012','0.232','0.99',None]}   

# After transposed
data = {'1': [None,'0.6','0.93','0.22','0.77'],
        '2': ['0.6',None,'1.01','0.124','0.012'],
        '3': ['0.93','1.01',None,'0.134','0.232'],
        '4': ['0.22','0.124','0.134',None,'0.99'],
        '5': ['0.77','0.012','0.232','0.99',None]}```  

【问题讨论】:

  • 您可以在 Pandas 中使用多种方法来解决这个问题 - 有用的是数据框的文本示例(5 行就可以)和一个示例输出(同样是 5 行)在转置方面pandas,你可以调用df.T方法
  • 我现在就写出这个例子,但是我使用了 df.T,它只是将列并排连接起来,所以我最终得到了 10 列,其中包含 2x 重复数据,而不是设置它们作为行。我将添加下一条评论作为示例。在 Stack Overflow 中写作很新。
  • 没问题可能需要使用pd.melt
  • 为了方便查看,我将代码添加到原件中。我会在等待的时候去查看关于融化的 Pandas Docs
  • 基本上,我要做的就是取第一列,并将第一行设置为它的所有值(这是一个正方形集),然后是第 2 列,等等,直到第 10,000 列。

标签: excel python-3.x pandas csv


【解决方案1】:

沿对角线翻转:

df = pd.DataFrame({
    '1': [None,None,None,None,None],
    '2': ['0.6',None,None,None,None],
    '3': ['0.93','1.01',None,None,None],
    '4': ['0.22','0.124','.134',None,None],
    '5': ['0.77','0.012','0.232','0.99',None]
})

flipped = df.T
flipped.columns = df.columns
flipped.index = df.index

func = lambda col1, col2: col1.combine_first(col2)
df.combine(flipped, func)

原文:

      1     2     3      4      5
0  None   0.6  0.93   0.22   0.77
1  None  None  1.01  0.124  0.012
2  None  None  None   .134  0.232
3  None  None  None   None   0.99
4  None  None  None   None   None

改造后:

      1      2      3      4      5
0  None    0.6   0.93   0.22   0.77
1   0.6   None   1.01  0.124  0.012
2  0.93   1.01   None   .134  0.232
3  0.22  0.124   .134   None   0.99
4  0.77  0.012  0.232   0.99   None

【讨论】:

  • 非常感谢,这正是我想要做的!我还不能竖起大拇指,否则我会的。
猜你喜欢
  • 1970-01-01
  • 2016-03-30
  • 1970-01-01
  • 1970-01-01
  • 2021-07-13
  • 2020-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多