Python 如何将字符串拆分为字符矩阵
假设我们在Python中有这个数组:Python 如何将字符串拆分为字符矩阵,python,string,pandas,split,Python,String,Pandas,Split,假设我们在Python中有这个数组: import pandas as pd arr = pd.DataFrame(['aabbc','aabccca','aa']) 我想将每一行拆分为其字符的列。行的长度可能不同。 这是我期望的输出(本例中为3*7矩阵): 我的矩阵的行数是20000,我不喜欢对循环使用。原始数据是蛋白质序列。 我读了,等等,他们没有帮我 选项1 一个简单的方法是使用列表理解 pd.DataFrame([list(x) for x in arr[0]]) 0 1
import pandas as pd
arr = pd.DataFrame(['aabbc','aabccca','aa'])
我想将每一行拆分为其字符的列。行的长度可能不同。
这是我期望的输出(本例中为3*7矩阵):
我的矩阵的行数是20000,我不喜欢对循环使用。原始数据是蛋白质序列。
我读了,等等,他们没有帮我 选项1
一个简单的方法是使用列表理解
pd.DataFrame([list(x) for x in arr[0]])
0 1 2 3 4 5 6
0 a a b b c None None
1 a a b c c c a
2 a a None None None None None
或者,使用执行相同操作的apply(list)
pd.DataFrame(arr[0].apply(list).tolist())
0 1 2 3 4 5 6
0 a a b b c None None
1 a a b c c c a
2 a a None None None None None
选项2
使用extractall
+unstack
进行替换。您将得到一个列的多索引。您可以删除结果的第一级
v = arr[0].str.extractall(r'(\w)').unstack()
v.columns = v.columns.droplevel(0)
选项3
操作视图
-
v = arr[0].values.astype(str)
pd.DataFrame(v.view('U1').reshape(v.shape[0], -1))
0 1 2 3 4 5 6
0 a a b b c
1 a a b c c c a
2 a a
这将为您提供空字符串('
),而不是单元格中的None
s。如果要重新添加,请使用replace
v
match 0 1 2 3 4 5 6
0 a a b b c None None
1 a a b c c c a
2 a a None None None None None
v = arr[0].values.astype(str)
pd.DataFrame(v.view('U1').reshape(v.shape[0], -1))
0 1 2 3 4 5 6
0 a a b b c
1 a a b c c c a
2 a a