首页 > 解决方案 > 将 csv 文件中的某些列相乘

问题描述

我有多个大型 csv 文件,其中某些列在我的情况下 0 是第一个:

1,4,7,10,13,16,19,22,25,28,31,34,37,40,43,46,49

应该乘以-1。

我想翻转这些列的数字符号并将所有 + 变为 - ,反之亦然。然后应保存该文件。这可以在linux中使用shell脚本吗?也许使用 awk 或 pandas 或类似的东西?

简短的例子:

-2,-4,-5, 8, 5, 7

应该

2, 4 ,5, -8,-5,-7

编辑:到目前为止我的努力是

import pandas as pd

myfile = open("anyfile.csv")
df = pd.read_csv(myfile, header=None)

#print(df, end="\n\n")

df[1,4,7,10,13,16,19,22,25,28,31,34,37,40,43,46,49] *= -1

#print(df)

如何将该结果保存到新的 csv。是否可以通过 shellscript 自动执行此操作?

标签: pandasshellcsvawk

解决方案


请您尝试以下操作。我正在考虑您要更改所有列的符号,并且您希望以逗号分隔符格式输出。

awk 'BEGIN{FS=OFS=","} {for(i=1;i<=NF;i++){$i=$i*-1}} 1'  Input_file

或者(根据詹姆斯先生的好建议):

awk 'BEGIN{FS=OFS=","} {for(i=1;i<=NF;i++){$i=-$i}}} 1'  Input_file

推荐阅读