pandas - 将 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 自动执行此操作?
解决方案
请您尝试以下操作。我正在考虑您要更改所有列的符号,并且您希望以逗号分隔符格式输出。
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
推荐阅读
- java - 在 Tomcat 服务器上使用 POST 方法从 jsp 到 jsp 的编码错误
- android - 无法在视频上使用 FFmpeg 绘制文本
- javascript - 如何使用我添加的外部脚本来响应 JS?
- elasticsearch - 在批量索引期间检测更改
- regex - 正则表达式逻辑
- node.js - Node js上的Heroku登录问题
- android - TextView 未以编程方式添加到我的布局中
- peoplesoft - 查找 SendMail 人员代码
- json - 用 jq 解析一组 JSON 对象
- typescript - 带有自定义 equals 方法的 TypeScript Set