【问题标题】:converting dataframe to list of tuples on condition在条件下将数据框转换为元组列表
【发布时间】:2017-01-29 15:22:15
【问题描述】:

我有以下 df:

    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)]

【问题讨论】:

    标签: python list pandas dataframe tuples


    【解决方案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)]
    

    【讨论】:

      猜你喜欢
      • 2021-08-11
      • 1970-01-01
      • 1970-01-01
      • 2018-02-03
      • 2017-12-30
      • 1970-01-01
      • 2018-02-05
      相关资源
      最近更新 更多