2016-09-21 2 views
1

У меня следующий ДФ:преобразования dataframe в список кортежей при условии

1   2   3   4 
1 NaN 0.000000 0.000000 0.000000 
2 NaN 0.027273 0.000000 0.000000 
3 NaN 0.000000 0.101449 0.000000 
4 NaN 0.000000 0.000000 0.194245 
5 NaN 0.000000 0.000000 0.000000 
6 NaN 0.000000 0.000000 0.000000 
7 NaN 0.000000 0.000000 0.000000 
8 NaN 0.000000 0.000000 0.000000 
13 NaN 0.000000 0.000000 0.000000 
14 NaN 0.000000 5   0.000000 

Как я могу преобразовать его в список кортежей [(column, row, data)] и принимать только значения, которые больше затем zero.

, например, я хочу иметь следующие значения:

[(2,2,0.027273), (3,3,0.101449), (3,14,5),(4,4,0.194245)] 

ответ

1

Вы можете первым отбрасывать столбцы int (при необходимости), unstack и использовать список понимание, где необходимо преобразовать первое и второе значение в tuples для int (по умолчанию float):

df.columns = df.columns.astype(int) 

s = df.unstack() 
tuples = [tuple((int(x[0]),int(x[1]),x[2])) for x in s[s>0].reset_index().values] 
print (tuples) 
[(2, 2, 0.027273000000000002), (3, 3, 0.101449), (3, 14, 5.0), (4, 4, 0.194245)] 
Смежные вопросы