python-如何从列中拆分字符串以创建长格式数据框
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-如何从列中拆分字符串以创建长格式数据框,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2742字,纯文字阅读大概需要4分钟。
内容图文
如果我有以下所示的数据框,如何制作长格式的数据框(即每个基因每行一个术语).
我想我将必须将split(“,”)应用于或映射到Term列,但是在那之后我该怎么办?
import pandas as pd
from StringIO import StringIO
df = pd.read_table(StringIO("""Gene Terms
Mt-nd1 GO:0005739,GO:0005743,GO:0016021,GO:0030425,GO:0043025,GO:0070469,GO:0005623,GO:0005622,GO:0005737
Madd GO:0016021,GO:0045202,GO:0005886
Zmiz1 GO:0005654,GO:0043231
Cdca7 GO:0005622,GO:0005623,GO:0005737,GO:0005634,GO:0005654"""), sep="\s+")
附言上表经过了简化,实际df将有更多列.
psps.如果我不清楚,我想以类似以下内容结束:
Mt-nd1 GO:0005739
Mt-nd1 GO:0005743
Mt-nd1 GO:0016021
...
Cdca7 GO:0005634
Cdca7 GO:0005654
解决方法:
您可以使用str.split进行拆分(而不是应用和拆分方法,但类似):
In [6]: splitted = df['Terms'].str.split(',', expand=True)
In [7]: splitted
Out[7]:
0 1 2 3 4 5 0 GO:0005739 GO:0005743 GO:0016021 GO:0030425 GO:0043025 GO:0070469
1 GO:0016021 GO:0045202 GO:0005886 NaN NaN NaN
2 GO:0005654 GO:0043231 NaN NaN NaN NaN
3 GO:0005622 GO:0005623 GO:0005737 GO:0005634 GO:0005654 NaN
6 7 8
0 GO:0005623 GO:0005622 GO:0005737
1 NaN NaN NaN
2 NaN NaN NaN
3 NaN NaN NaN
要将其变成列(而不是列表),可以使用expand = True关键字进行拆分,或者对于较旧的熊猫版本,可以执行df [‘Terms’].str.split(‘,’).apply(pd.系列)获得相同的结果.
现在,为了获得所需的输出,我们必须堆叠这些列,但首先将其与genes列合并,以在堆叠的框架中包含此信息:
In [14]: stacked = pd.concat([df['Gene'], splitted],axis=1).set_index('Gene').stack()
In [15]: stacked
Out[15]:
Gene
Mt-nd1 0 GO:0005739
1 GO:0005743
2 GO:0016021
3 GO:0030425
4 GO:0043025
5 GO:0070469
6 GO:0005623
7 GO:0005622
8 GO:0005737
Madd 0 GO:0016021
1 GO:0045202
2 GO:0005886
Zmiz1 0 GO:0005654
1 GO:0043231
Cdca7 0 GO:0005622
1 GO:0005623
2 GO:0005737
3 GO:0005634
4 GO:0005654
dtype: object
从这里,我们可以重置索引,用术语重命名我们的列,并删除不再需要的整数列(从自动生成的列名称中删除):
In [19]: stacked.rename(columns={0:'Term'}).drop('level_1', axis=1)
Out[19]:
Gene Term
0 Mt-nd1 GO:0005739
1 Mt-nd1 GO:0005743
2 Mt-nd1 GO:0016021
3 Mt-nd1 GO:0030425
4 Mt-nd1 GO:0043025
5 Mt-nd1 GO:0070469
6 Mt-nd1 GO:0005623
7 Mt-nd1 GO:0005622
8 Mt-nd1 GO:0005737
9 Madd GO:0016021
10 Madd GO:0045202
11 Madd GO:0005886
12 Zmiz1 GO:0005654
13 Zmiz1 GO:0043231
14 Cdca7 GO:0005622
15 Cdca7 GO:0005623
16 Cdca7 GO:0005737
17 Cdca7 GO:0005634
18 Cdca7 GO:0005654
如何将其与您所拥有的其他列组合或合并,将取决于您确切要如何处理.
内容总结
以上是互联网集市为您收集整理的python-如何从列中拆分字符串以创建长格式数据框全部内容,希望文章能够帮你解决python-如何从列中拆分字符串以创建长格式数据框所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。