2017-04-26 61 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

相關問題