Python 如何在读取csv时删除项目并返回列表

Python 如何在读取csv时删除项目并返回列表,python,list,csv,Python,List,Csv,我试图删除XY坐标,但X坐标是,您需要在提取X坐标的同时提取Y坐标: with open('Wide_Single_timestamp2.csv') as csvfile: readCSV = csv.reader(csvfile, delimiter=',') n=0 for row in readCSV: if n == 0: n + =1 continue x_data = []

我试图删除XY坐标,但X坐标是
,您需要在提取X坐标的同时提取Y坐标:

with open('Wide_Single_timestamp2.csv') as csvfile:
    readCSV = csv.reader(csvfile, delimiter=',')
    n=0
    for row in readCSV:
        if n == 0:
            n + =1
            continue
        x_data = []
        y_data = []
        for (x,y) in [(2,3), (4,5), (6,7)]:
            xcoord = float(row[x])
            if xcoord >= 5:
                x_data.append(xcoord)  # all xcoords >= 5
                y_data.append(float(row[y])
        visuals[0].append(x_data)

顺便说一句,如果xcoord<5:continue

将行切片并使用
range
将其映射为两个变量,以发布值2,4,6。比较x坐标,如果匹配,将坐标添加到列表中:

for px,py in (row[i:2+i] for i in range(2,7,2)):
    px = float(px)  # avoid multiple float conversions for px
    if px < 5:
        continue
    else:
        # convert py to float only if needed
        xy_data.append([px,float(py)])
对于px,py in(第[i:2+i]行表示范围(2,7,2)中的i):
px=浮点(px)#避免px的多次浮点转换
如果px<5:
持续
其他:
#仅在需要时将py转换为float
xy_数据追加([px,float(py)])

使用熊猫,我们可以像下面这样轻松完成

import pandas as pd
import numpy as np
widexy= pd.read_csv("Wide_Single_timestamp2.csv")
#add every x values then new row is X-Coordinates 
Check = widexy[X-Coordinates>5]
updatedYCoord = widexy[Y-Coordinates][Check]#This will give the output

你能详细说明一下要求吗?也许是一个示例输出。让你的播放器变量在一个由行(2,3),(4,5),(6,7)组成的元组上循环,并检查播放器[0]>=5,然后将播放器添加到你的数据列表中。你能不能详细说明一下@BoboDarphWould对解释range的用法很有用,或者更多关于intent的注释。我已经考虑过这个相同的答案。我想它会按照OP的要求工作的。Upvoted确切地说…曾经被否决的人可能不理解全部问题这可能是另一个问题@quamrana,但我在代码输出方面遇到了问题。代码将删除小于5的XY数据。但是结果列表并没有保持相同的列结构。使用上述csv文件,播放器2的XY数据被删除,但播放器3的数据不是空白,而是向左移动。当游戏者2>5时,游戏者3随后移回相应的列。出现这种情况的原因是什么?好吧,结果不包含任何关于xcoord玩家的信息。我在问题中提供了更多信息。我会说
else:
'
继续
不,当然不会,它会像:
else:x_data.append('invalid')
似乎缺少一些
符号--您是否尝试运行此代码?
Player 1_X  Player 2_X  Player 3_X
67.32213473             69.95692546 
67.30126517             69.90505068 
67.28604137             69.83347832 
67.27140091             69.7662355  
67.26373215             69.72997973 
67.28158751 5.294844117 69.72595034
67.32005993 5.721823825 69.73204207
67.36659395 6.155413991 69.72947318
67.40717007 6.58302186  69.71798806
67.42824027 7.001268674 69.69067463
67.44179872 7.437058638 69.64537185
with open('Wide_Single_timestamp2.csv') as csvfile:
    readCSV = csv.reader(csvfile, delimiter=',')
    n=0
    for row in readCSV:
        if n == 0:
            n + =1
            continue
        x_data = []
        y_data = []
        for (x,y) in [(2,3), (4,5), (6,7)]:
            xcoord = float(row[x])
            if xcoord >= 5:
                x_data.append(xcoord)  # all xcoords >= 5
                y_data.append(float(row[y])
        visuals[0].append(x_data)
for px,py in (row[i:2+i] for i in range(2,7,2)):
    px = float(px)  # avoid multiple float conversions for px
    if px < 5:
        continue
    else:
        # convert py to float only if needed
        xy_data.append([px,float(py)])
import pandas as pd
import numpy as np
widexy= pd.read_csv("Wide_Single_timestamp2.csv")
#add every x values then new row is X-Coordinates 
Check = widexy[X-Coordinates>5]
updatedYCoord = widexy[Y-Coordinates][Check]#This will give the output