【问题标题】:Python function for have a new arrayPython函数有一个新的数组
【发布时间】:2020-09-08 00:36:43
【问题描述】:

我有一个问题。我有两个列表: a=["a","b","c","d","e","f"] 我在另一个列表中有 6 个值: b=["1.1", "1.2 ", "1,3", "1.4", "1.5", "1.6"] 我想获得这样的数据框:

 a   b   c   d   e   f
1.1 1.2 1.3
1.1 1.2 1.3
1.1 1.2 1.3
    1.2 1.3 1.4
    1.2 1.3 1.4
    1.2 1.3 1.4
        1.3 1.4 1.5
        1.3 1.4 1.5
        1.3 1.4 1.5
            1.4 1.5 1.6
            1.4 1.5 1.6
            1.4 1.5 1.6

我希望你能帮我解决这个问题(我尝试了不同的方法,但我不知道该怎么做)

【问题讨论】:

  • “我尝试了不同的方法”:你尝试了什么?向我们展示,以便我们对其发表评论。
  • 你能解释一下输出背后的规则吗?
  • 大家好。不用担心,Mike67 回答了这个问题。感谢您的尝试:)

标签: arrays python-3.x matrix


【解决方案1】:

您使用基本循环创建列表列表,然后从主列表创建数据框。

试试这个代码:

import pandas as pd

a=["a","b","c","d","e","f"]
b=["1.1", "1.2", "1.3", "1.4", "1.5", "1.6"]

cnt = 3
lst = []
for x in range(len(b)-cnt+1):  # shift across columns
    for y in range(cnt):  # three duplicate rows
       lst.append(['']*x + b[x:x+cnt] + ['']*(len(b)-x-cnt))  # single row
       
df = pd.DataFrame(lst, columns=a) 

print(df.to_string(index=False))

输出

  a    b    c    d    e    f
 1.1  1.2  1.3
 1.1  1.2  1.3
 1.1  1.2  1.3
      1.2  1.3  1.4
      1.2  1.3  1.4
      1.2  1.3  1.4
           1.3  1.4  1.5
           1.3  1.4  1.5
           1.3  1.4  1.5
                1.4  1.5  1.6
                1.4  1.5  1.6
                1.4  1.5  1.6

【讨论】:

  • 问题。如果我在 b 中有 N 个值并且我想做同样的事情怎么办。像数组 3xN 而不是 3x3 就像前面的例子一样
  • 如果ab 的长度相同,它应该仍然有效。
  • 如果 b 的长度总是 "a" 的两倍怎么办?
  • 你需要确定你想怎么看。 a 是列标题列表。其他列的标题应该是什么?
  • 嗨,迈克。基本上我正在尝试更改数据框中的顺序。相反,将那些 1.1 值放在我想要作为行的列中。我正在尝试这样做,因为这些值是 Levenstein 的值,以查看我的序列与数据库的相似程度。在这种情况下,例如,序列“ABC”与我数据库中的另一个序列不太相似(这就是为什么我应该在 A、B 和 C 之下有 1.1)等等其他值。顺便说一下,这个例子的值是组成的。一般来说,我的“序列”是 ABCDEF,我的分数在列表 b 内。
猜你喜欢
  • 2012-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-06
  • 1970-01-01
  • 2017-06-21
  • 1970-01-01
相关资源
最近更新 更多