How to transpose data in pandas Dataframe by reading one row at a time?(如何通过一次读取一行的方式在 pandas Dataframe中调换数据?)
本文介绍了如何通过一次读取一行的方式在 pandas Dataframe中调换数据?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在 pandas 数据框中:
contig haplotype_block hap_X hap_Y odds_ratio My_hap Sp_hap
2 726 C-G-C T-C-T 0.012 C-G-C T-C-T
2 1094 G-C A-T 0.02 A-T G-C
2 1335 C-T-T A-C-A 0.001 A-C-A C-T-T
2 3353 T-T A-C 314.5 T-T A-C
我想要调换数据。简单的转置就可以了,但这有点复杂。
- 我不需要移动列索引。
- 基本上行数会增加。
我想要做的就是读取每一行(行),然后首先转置该行。
contig haplotype_block hap_X hap_Y odds_ratio My_hap Sp_hap
2 726 C T 0.012 C T
2 726 G C - G C
2 726 C T - C T
2 1094 G A 0.02 A G
2 1094 C T - T C
现在,转置第三行并沿行添加到上面的数据帧中。
我可以使用for-loop(一次读取每一行)来完成这项工作,但我正在专门寻找使用PANDA数据帧的解决方案,因此内存占用以及代码理解都是清晰而优雅的。
谢谢,
推荐答案
您可以使用:
from itertools import chain
#create list by split
cols = ['hap_X','hap_Y','My_hap','Sp_hap']
df[cols] = df[cols].apply(lambda x: x.str.split('-'))
#new df with flatening lists and repeating
lens = df.hap_X.str.len()
df2 = pd.DataFrame({
"contig": np.repeat(df.contig.values, lens),
"haplotype_block": np.repeat(df.haplotype_block.values, lens),
"hap_X": list(chain.from_iterable(df.hap_X)),
"hap_Y": list(chain.from_iterable(df.hap_Y)),
"odds_ratio": np.repeat(df.odds_ratio.values, lens),
"My_hap": list(chain.from_iterable(df.My_hap)),
"Sp_hap": list(chain.from_iterable(df.Sp_hap))
}).reindex_axis(df.columns, axis=1)
#correct column odds_ratio - only first value
s = pd.Series(np.repeat(df.index.values, lens))
df2.loc[s.duplicated(), 'odds_ratio'] = '-'
print (df2)
contig haplotype_block hap_X hap_Y odds_ratio My_hap Sp_hap
0 2 726 C T 0.012 C T
1 2 726 G C - G C
2 2 726 C T - C T
3 2 1094 G A 0.02 A G
4 2 1094 C T - T C
5 2 1335 C A 0.001 A C
6 2 1335 T C - C T
7 2 1335 T A - A T
8 2 3353 T A 314.5 T A
9 2 3353 T C - T C
这篇关于如何通过一次读取一行的方式在 pandas Dataframe中调换数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:如何通过一次读取一行的方式在 pandas Dataframe中调换数据?


猜你喜欢
- 如何将一个类的函数分成多个文件? 2022-01-01
- python-m http.server 443--使用SSL? 2022-01-01
- 如何在 Python 的元组列表中对每个元组中的第一个值求和? 2022-01-01
- 分析异常:路径不存在:dbfs:/databricks/python/lib/python3.7/site-packages/sampleFolder/data; 2022-01-01
- 如何在 python3 中将 OrderedDict 转换为常规字典 2022-01-01
- 沿轴计算直方图 2022-01-01
- 使用Heroku上托管的Selenium登录Instagram时,找不到元素';用户名'; 2022-01-01
- pytorch 中的自适应池是如何工作的? 2022-07-12
- python check_output 失败,退出状态为 1,但 Popen 适用于相同的命令 2022-01-01
- padding='same' 转换为 PyTorch padding=# 2022-01-01