我有一个这样的文本文件:
444537110 3 11112111022002200022022111121222002...
输入文件中最后一个字段的长度为50k个字符,并且只有0、1或2个字符。我要一个热编码版本的最后一个字段。所以我的预期结果是这样的一个数据帧:
^{pr2}$我通过读取输入文件创建了一个初始数据帧:
df = pd.read_csv('test.txt', index_col=0, sep='\s+', header=None, names = ['chip', 'genos'])
这将创建一个包含3列的数据帧,如下所示:
id chip genos
444537110 3 1111211102200220000022022111121222000200022002...
我想我可以使用下面的方法创建初始的单独列,然后使用pandas get_dummies函数进行一个热编码,但我无法创建单独的列。我试过了
[c for c in df['genos'].str]
但这并不是把人物分开
我在这里看到了一个类似的问题和答案:How can I one hot encode in Python?
但这只处理一个热编码,而不处理拆分一个非常大的列所带来的额外复杂性
记住@Dan对您的问题的评论,即您将以50k*3列结尾,您可以通过这样做获得您想要的输出:
输出
^{pr2}$首先用convert string to list创建} :
DataFrame
,然后调用^{如果需要将新列添加到原始列(如果可能缺少某些组合),请使用^{} ,方法是使用
^{pr2}$_
拆分列,并使用{a3}创建的所有组合:如果只拆分50k个字符,可以使用原始Python(为了可读性):
相关问题 更多 >
编程相关推荐