使用python中的shift键将列表转换为数据帧
我是新来的。拜托,我想从一个不同基序的氨基酸序列中得到Levenshtein距离。 所以,我得到了一个如下示例所示的列表。我想知道如何在数据帧上排列列表,每“N”行向右移动一列。在这个例子中,N=3,我想改变N的任意值。我正在使用python,谢谢使用python中的shift键将列表转换为数据帧,python,pandas,numpy,Python,Pandas,Numpy,我是新来的。拜托,我想从一个不同基序的氨基酸序列中得到Levenshtein距离。 所以,我得到了一个如下示例所示的列表。我想知道如何在数据帧上排列列表,每“N”行向右移动一列。在这个例子中,N=3,我想改变N的任意值。我正在使用python,谢谢 一种方法是为给定表格的列中的每个字母创建一个存储: n=3 列表1=[1,5,2,3,1,3,1,3,0,0,5,1] 列表2=['A','B','C','D','E','F'] 表=dict() 对于i,枚举中的字母(列表2): 开始=最大值(0,
一种方法是为给定表格的列中的每个字母创建一个存储:
n=3
列表1=[1,5,2,3,1,3,1,3,0,0,5,1]
列表2=['A','B','C','D','E','F']
表=dict()
对于i,枚举中的字母(列表2):
开始=最大值(0,n*(i-n+1))
结束=最小值(长度(列表1),n*(i+1))
表[字母]=[无]*开始\
+列表1[开始:结束]\
+[无]*(len(列表1)-结束)
打印(表格)
哪个输出
{'A': [1, 5, 2, None, None, None, None, None, None, None, None, None], 'B': [1, 5, 2, 3, 1, 3, None, None, None, None, None, None], 'C': [1, 5, 2, 3, 1, 3, 1, 3, 0, None, None, None], 'D': [None, None, None, 3, 1, 3, 1, 3, 0, 0, 5, 1], 'E': [None, None, None, None, None, None, 1, 3, 0, 0, 5, 1], 'F': [None, None, None, None, None, None, None, None, None, 0, 5, 1]}
使用漂亮的打印,可以重新创建给定的表:
print(“”+“”.join(列表2))
对于范围内的i(len(列表1)):
line=“”
对于列表2中的字母:
s=表[字母][i]
行+=f“{s:2d}”,如果s不是其他行“”
打印(行)
哪张照片
A B C D E F
1 1 1
5 5 5
2 2 2
3 3 3
1 1 1
3 3 3
1 1 1
3 3 3
0 0 0
0 0 0
5 5 5
1 1 1
如果您需要数据帧,可以在pandas中使用
df.shift(句点=n,轴=1)
。例如
import pandas as pd
import numpy as np
n = 3
List1 = ['1', '5', '2', '3', '1', '3', '1', '3', '0', '0', '5', '1']
List2 = ['A', 'B', 'C', 'D', 'E', 'F']
df = pd.DataFrame(data = [List1] * n + [[np.nan] * len(List1)] * n).transpose()
df.columns = List2
for x in range(0, len(List1), n):
df.loc[x:(x+n-1)] = df.loc[x:(x+n-1)].shift(periods = x // n, axis = 1)
df
将为您提供:
A B C D E F
0 1 1 1 NaN NaN NaN
1 5 5 5 NaN NaN NaN
2 2 2 2 NaN NaN NaN
3 NaN 3 3 3 NaN NaN
4 NaN 1 1 1 NaN NaN
5 NaN 3 3 3 NaN NaN
6 NaN NaN 1 1 1 NaN
7 NaN NaN 3 3 3 NaN
8 NaN NaN 0 0 0 NaN
9 NaN NaN NaN 0 0 0
10 NaN NaN NaN 5 5 5
11 NaN NaN NaN 1 1 1
您想要的输出是什么样子的?你好,Ehsan。我想知道您是否能够在图像中看到我想要的输出,但它应该是一个每N列(本例中为3列)移位的数据帧。像图片一样的东西非常感谢!!!