【问题标题】:Python - Compare last column in all rows of a .csv filePython - 比较 .csv 文件所有行中的最后一列
【发布时间】:2022-01-02 05:00:17
【问题描述】:

我已从 .csv 文件中读取所有行,如下所示:-

from csv import reader, writer

# open file in read mode
with open('data.csv', 'r') as read_obj:

    # pass the file object to reader() to get the reader object
    csv_reader = reader(read_obj)
    # Iterate over each row in the csv using reader object
    for row in csv_reader:

现在,我尝试仅比较 csv 文件中每一行的最后一列。 csv文件中的数据是这样的:-

Row 1: 0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,0,0,0,1
Row 2: 0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,0,0,0,0
Row 3: 0,1,0,1,1,1,0,1,0,0,1,0,0,0,1,1,1,0,1,0,0,0,1
Row 4: 0,1,0,1,1,1,0,1,0,0,1,0,0,0,1,1,1,0,1,0,0,0,1
Row 5: 0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,0,0,0,0

我只需要比较每一行最后一列的 1 和 0。在最后一列中,如果第一行有 1,第二行有 0,则打印第一行。

例如 1:

Row 1: 0,0,1,1
Row 2: 0,1,1,0

然后,我打印第 1 行

对于前 2:

Row 1: 0,0,1,1
Row 2: 0,1,1,1
Row 3: 0,1,1,0

然后,我打印第 2 行

对于这个问题的任何建议将不胜感激。谢谢!

【问题讨论】:

  • 示例 CSV 的最终输出应该是什么样的?从我阅读您的提示的方式来看,倒数第二列中没有 1,因此最后一列将保持不变。
  • @ZachYoung 我只需要比较每一行的最后一列的 1 和 0。在最后一列中,如果第一行有 1,第二行有 0,那么我们打印第一行。
  • 所以只打印了一行?如果该行在最后一列中为 1,并且最后一行在最后一列中为 0,则将打印倒数第二行?
  • 在大例子中,只打印第 5 行?

标签: python csv


【解决方案1】:

使用熊猫

import pandas as pd

path = (r"data.csv")

data = pd.read_csv(path)

last_column = data.iloc[: , -1]

【讨论】:

  • 感谢您的帮助!有没有办法用 csv 模块做到这一点?
  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
【解决方案2】:

我希望这会有所帮助。它向您展示了如何:

  1. 读取您的输入行,将'1''0' 转换为10,然后存储该行
  2. 查找最后一行和倒数第二行
  3. 比较这两行的最后一列
import csv

all_rows = []
with open('data.csv', newline='') as in_f:
    reader = csv.reader(in_f)

    # Read all rows and convert columns from string to int
    for row in reader:
        all_rows.append([int(col) for col in row])

last_row = all_rows[-1]
previous_row = all_rows[-2]

if previous_row[-1] == 1 and last_row[-1] == 0:
    with open('new.csv', 'w', newline='') as out_f:
        writer = csv.writer(out_f)
        writer.writerow(previous_row)

当我在 Ex 1 上运行它时:

0,0,1,1
0,1,1,0

我明白了:

0,0,1,1

Ex 2上:

0,0,1,1
0,1,1,1
0,1,1,0

我明白了

0,1,1,1

还有一个大例子:

0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,0,0,0,1
0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,0,0,0,0
0,1,0,1,1,1,0,1,0,0,1,0,0,0,1,1,1,0,1,0,0,0,1
0,1,0,1,1,1,0,1,0,0,1,0,0,0,1,1,1,0,1,0,0,0,1
0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,0,0,0,0

我得到第 4 行:

0,1,0,1,1,1,0,1,0,0,1,0,0,0,1,1,1,0,1,0,0,0,1

【讨论】:

  • 哦,成功了吗?
  • 不,我现在正在使用 pandas,但以后使用时会考虑这个答案。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-06
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 2022-01-18
  • 1970-01-01
  • 2014-08-24
相关资源
最近更新 更多