Pandas 将csv文件中的某些列相乘
我有多个大型csv文件,其中某些列在我的示例中,0是第一列: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
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;我