【发布时间】:2018-02-01 01:24:06
【问题描述】:
我正在读取一个 csv 数据集并将 X 和 Y 坐标返回到单独的列表中。如果 X 坐标小于 5,我将删除 XY 坐标。
csv 的结构如下:
Frame Time Player 1_X Player 1_Y Player 2_X Player 2_Y Player 3_X Player 3_Y
2920 15:31.0 67.30126517 23.99694962 3.753634891 -2.13857999 69.90505068 -2.504794226
2921 15:31.1 67.28604137 24.20629904 4.122542578 -1.939556384 69.83347832 -2.377951675
2922 15:31.2 67.27140091 24.41644649 4.500764877 -1.724636234 69.7662355 -2.257606667
2923 15:31.3 67.26373215 24.61751047 4.887649337 -1.501664655 69.72997973 -2.135141953
2924 15:31.4 67.28158751 24.80200421 5.294844117 -1.275928937 69.72595034 -2.013856015
2925 15:31.5 67.32005993 24.97498635 5.721823825 -1.042487504 69.73204207 -1.907299936
2926 15:31.6 67.36659395 25.14388582 6.155413991 -0.789898029 69.72947318 -1.811930399
2927 15:31.7 67.40717007 25.31477304 6.58302186 -0.513340546 69.71798806 -1.71190236
2928 15:31.8 67.42824027 25.48791173 7.001268674 -0.212791949 69.69067463 -1.61337704
2929 15:31.9 67.44179872 25.65540719 7.437058638 0.112079642 69.64537185 -1.526329851
2930 15:32.0 67.46336705 25.82181033 7.90386401 0.447834398 69.6061351 -1.441474747
如果 X 值小于 5,我使用下面的代码删除所有玩家的 XY 值。因此,使用此代码将删除玩家 2 的 XY 数据直到第 2923 帧。
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)
y_data.append(float(row[y]))
visuals[1].append(x_data)
visuals[0].append(y_data)
这是因为从小于 5 的 X 坐标中删除了结果数据。但是,我得到了一个奇怪的格式化结果。空数据列(小于 5 的列)现在由右侧的数据填充。前任。玩家 2 应该是空的,但它现在有玩家 3 的数据(见下文)。
这是 X 列的导出。 (Y 列相同)。如您所见,所有小于 5 的数据都被删除,但右侧的列被移动,这意味着它没有与适当的播放器正确对齐。
在读取文件时删除值时如何保持数据集的相同结构?
2920 67.27140091 69.7662355
2921 67.26373215 69.72997973
2922 67.28158751 5.294844117 69.72595034
2923 67.32005993 5.721823825 69.73204207
2924 67.36659395 6.155413991 69.72947318
2925 67.40717007 6.58302186 69.71798806
2926 67.42824027 7.001268674 69.69067463
2927 67.44179872 7.437058638 69.64537185
2928 67.46336705 7.90386401 69.6061351
生成的数据集应如下所示:
2920 67.27140091 69.7662355
2921 67.26373215 69.72997973
2922 67.28158751 5.294844117 69.72595034
2923 67.32005993 5.721823825 69.73204207
2924 67.36659395 6.155413991 69.72947318
2925 67.40717007 6.58302186 69.71798806
2926 67.42824027 7.001268674 69.69067463
2927 67.44179872 7.437058638 69.64537185
2928 67.46336705 7.90386401 69.6061351
玩家 3 是否与玩家 3 对齐,而不是在玩家 2 的数据被删除时转移到玩家 2。很抱歉这个冗长的问题。只是想提供上下文。我不明白为什么它会以这种方式格式化或如何修复它。
【问题讨论】:
标签: python list csv formatting