Pandas 将csv文件中的某些列相乘

Pandas 将csv文件中的某些列相乘,pandas,shell,csv,awk,Pandas,Shell,Csv,Awk,我有多个大型csv文件,其中某些列在我的示例中,0是第一列: 1,4,7,10,13,16,19,22,25,28,31,34,37,40,43,46,49 应该乘以-1 我想翻转这些列的数字符号,并使所有+到-相反。然后应保存该文件。linux中的shell脚本是否可以实现这一点?也许是awk或者熊猫或者类似的东西 简短示例: -2,-4,-5, 8, 5, 7 应该是 2, 4 ,5, -8,-5,-7 编辑:到目前为止,我的努力是 import pandas as pd myfil

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

1,4,7,10,13,16,19,22,25,28,31,34,37,40,43,46,49
应该乘以-1

我想翻转这些列的数字符号,并使所有+到-相反。然后应保存该文件。linux中的shell脚本是否可以实现这一点?也许是awk或者熊猫或者类似的东西

简短示例:

-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自动执行此操作?

请尝试以下操作。我认为您希望更改所有列的符号,并希望输出为逗号分隔符格式

awk 'BEGIN{FS=OFS=","} {for(i=1;i<=NF;i++){$i=$i*-1}} 1'  Input_file
ORas per James sir的建议:

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

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

awk -v f="$columns" '
    BEGIN{ FS=OFS=","; n=split(f,cols,",") }
    { for(i=1; i<=n; i++) $(cols[i]+1)=-1*$(cols[i]+1) }1
' file.csv 
其中:

列编号列表在awk中指定为变量f,然后拆分为一个名为cols的数组 然后,您可以循环遍历这个数组,通过$cols[i]+1找到列号,然后进行计算。 我假设所有列都是数字,没有嵌入字段。

始终添加a-并删除-。处理空格

echo "-2,-4,-5, 8, 5, 7" | sed -r 's/ //g;s/(^|,)/& -/g;s/--//g;s/^ //'

因此,我们鼓励所有用户发布他们为解决他们自己的问题所做的努力,所以请这样做,然后让我们知道。尝试以下方式:awk-F,{print$1*-1,$2*-1}file.csv要保存熊猫df,您可以使用:df.to_csv'outputfile.csv'fori=1;我