2017-04-26 42 views
0

全部:我试图删除我的元组数据框中的零数据,但无法完成。你能帮我一个忙吗?如何排除元组数据框中零数据索引

我的代码:

mylist = [[0 for y in xrange(0, 10, 1)] for x in xrange(0, 10, 1)] 
for i in xrange(0, 10, 2): 
    for j in xrange(0, 10, 2): 
     mylist[i][j] = '%s,%s'%(i,j) 

print mylist 

df = pd.DataFrame(mylist) 

print df 

我想有一个(X,Y)坐标系统创建。所述原点是(0,0)(x,y)的步骤是(2,4)。 (0,0),(2,0)...(4,0)直到(2 * x,0),然后循环到y(4,0),(4 ,2)...(4,2 * x)。再次感谢您的回答。

+1

你在哪里试图删除零数据?你的预期产出是多少? – roganjosh

回答

1

更新回复: 首先,删除所有零的数组(在for循环之后)。

mylist = [x for x in mylist if not all([val == 0 for val in x])] 

然后,删除其余数组中存在的零。

mylist = [[v for v in x if v != 0] for x in mylist] 

这将创建以下内容:[[ '0,0', '0,2', '0,4', '0,6', '0,8'],['2, 0','2,2','2,4','2,6','2,8'],['4,0','4,2','4,4','4' 6','4,8'],['6,0','6,2','6,4','6,6','6,8'],['8,0',' 8,2','8,4','8,6','8,8']]。

您也可以将这两个步骤合并为一个。可能稍微有点时间效率,但看起来有点凌乱。

[[v for v in x if v!=0] for x in mylist if not all([val==0 for val in x])] 

要通过代码走,你的第一行创建数组的数组,充满了0。然后你有一个for循环,它在xrange(0, 10, 2)

您已将外循环的步骤设置为等于2.这意味着它将在mylist中的每个其他数组上运行。

你内循环也有其步骤参数为2。因此,它只会对您所在的特定数组中的每个其他值进行操作。

如果您希望将您最初创建的每个零点替换为%s,%s字符串,只需将每个for循环的最后一个参数更改为1即可。 (即...xrange(0, 10, 1)

+0

我不明白这是如何解决这个帖子的。这仍然包括'0'值,最接近我可以理解所需的输出是他们不应该存在。 – roganjosh

+0

感谢您的回答,但这是故意的。我尝试在这个数组中做出不同的步骤(例如2)。所以回到我的问题,如果是这样的话,我该如何删除这个数组中的零数据?谢谢! – odom0905

+0

@ odom0905你能解答我的初步评论吗?除非你能明确你想要的东西,否则这个问题是无法回答的。 – roganjosh

相关问题