如何在正数情况下利用幂函数来处理csv文件的值?

2024-04-25 13:27:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有n行m列的CSV文件,我想检查每个单元格(除了行和列标题),如果是正数,我希望该值为2^值。对于用过的excel小但行数超过20k的我的电脑不能用它,任何shell/python/perl脚本都可以吗? 谢谢。你知道吗

例如: 我的档案

ProbeName   US4  US45
U53   -0.01451   0.236518645
U62    0.67387  -0.922669981
U79    0.20579   0.211221866
U93   -0.72504  -0.158386611
U19   -0.25354   1.118372946
U11    0.71177  -0.209527672

结果文件

ProbeName   US4     US45
U53  -0.01451        1.17814625389
U62   1.59535        -0.922669981
U79   1.15331        1.15766823622
U93  -0.72504        -0.158386611
U19  -0.25354        2.17101989391
U11   1.63782        -0.209527672

Tags: 文件csv标题excel行和列正数u11us4
1条回答
网友
1楼 · 发布于 2024-04-25 13:27:25

可以这样使用awk

awk 'NR>1{ for(i=2; i<=NF; i++) $i = ($i > 0 ? 2 ^ $i : $i) } 1' file

ProbeName   US4  US45
U53 -0.01451 1.17815
U62 1.59535 -0.922669981
U79 1.15332 1.15767
U93 -0.72504 -0.158386611
U19 -0.25354 2.17102
U11 1.63781 -0.209527672

要获取格式化输出:

awk 'NR>1{ for(i=2; i<=NF; i++) $i = ($i > 0 ? 2 ^ $i : $i) } 1' file | column -t

ProbeName  US4       US45
U53        -0.01451  1.17815
U62        1.59535   -0.922669981
U79        1.15332   1.15767
U93        -0.72504  -0.158386611
U19        -0.25354  2.17102
U11        1.63781   -0.209527672

学习awk:Effective AWK Programming

相关问题 更多 >