如何返回与熊猫数据框中的每一行都符合条件的列标题?

调味酱

我有一个形式的熊猫数据框df

     Col1      Col2      Col3      Col4

0    True      False     True      False
1    False     False     False     False
2    False     True      False     False
3    True      True      True      True

在这里,True和False是布尔值。

我正在尝试生成一个新的pandas数据框new_df,其外观应为:

     Matched_Cols

0    [Col1, Col3]
1    []
2    [Col2]
3    [Col1, Col2, Col3, Col4]

最有效的方法是什么?

迪卡卡

方法1

这是数组数据处理-

def iter_accum(df):
    c = df.columns.values.astype(str)
    return pd.DataFrame({'Matched_Cols':[c[i] for i in df.values]})

样本输出-

In [41]: df
Out[41]: 
    Col1   Col2   Col3   Col4
0   True  False   True  False
1  False  False  False  False
2  False   True  False  False
3   True   True   True   True

In [42]: iter_accum(df)
Out[42]: 
               Matched_Cols
0              [Col1, Col3]
1                        []
2                    [Col2]
3  [Col1, Col2, Col3, Col4]

方法#2

另一个切片数据和一些布尔索引-

def slice_accum(df):
    c = df.columns.values.astype(str)
    a = df.values
    vals = np.broadcast_to(c,a.shape)[a]
    I = np.r_[0,a.sum(1).cumsum()]
    ac = []
    for (i,j) in zip(I[:-1],I[1:]):
        ac.append(vals[i:j])
    return pd.DataFrame({'Matched_Cols':ac})

标杆管理

其他拟议解决方案-

# @jezrael's soln-1
def jez1(df):
    return df.apply(lambda x: x.index[x].tolist(), axis=1)

# @jezrael's soln-2
def jez2(df):
    return df.dot(df.columns + ',').str.rstrip(',').str.split(',')

# @Shubham Sharma's soln
def Shubham1(df):
    return df.agg(lambda s: s.index[s].values, axis=1) 

# @sammywemmy's soln
def sammywemmy1(df):
    return pd.DataFrame({'Matched_Cols':[np.compress(x,y) for x,y in zip(df.to_numpy(),np.tile(df.columns,(len(df),1)))]})

使用benchit软件包(打包在一起的基准测试工具很少;免责声明:我是它的作者)对建议的解决方案进行基准测试。

import benchit
funcs = [iter_accum,slice_accum,jez1,jez2,Shubham1,sammywemmy1]
in_ = {n:pd.DataFrame(np.random.rand(n,n)>0.5, columns=['Col'+str(i) for i in range(1,n+1)]) for n in [4,20,100,200,500,1000]}
t = benchit.timings(funcs, in_, input_name='Len')
t.rank()
t.plot(logx=True)

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

遍历pyspark数据框的行,但将每一行都保留为一个数据框

来自分类Dev

如果数据的每一行都分开了,是否可以解析R中的数据?

来自分类Dev

如何在数据框中创建新列,其中新列的每一行都是所有先前行的乘法

来自分类Dev

如何为熊猫数据框的每一行打印索引值,列名和列数据?

来自分类Dev

为熊猫数据框的每一行替换一列中的字符串

来自分类Dev

在大熊猫数据框中对代码进行矢量化处理,其中每一行都应视为一个numpy数组

来自分类Dev

组中每一行的熊猫条件列值

来自分类Dev

如何将熊猫数据框中的每一行乘以不同的值

来自分类Dev

如何对熊猫数据框中的每一行进行排序并获取索引?

来自分类Dev

如何有效地从熊猫数据框中减去每一行?

来自分类Dev

对每一行数据框的列求和,并在多级索引熊猫数据框中添加新列

来自分类Dev

是否对每一行都进行更改?

来自分类Dev

每一行都无法回声不同

来自分类Dev

如果Linter在每一行都抛出错误,该如何工作?

来自分类Dev

从数组中提取多个数据列表,其中结果数据中的每一行都引用源数据中的同一单元格

来自分类Dev

根据条件更新熊猫数据框中特定列的下一行

来自分类Dev

Spark数据框是否像熊猫一样在每一行都有一个“行名”?

来自分类Dev

合并数据框的行,其中每一行都是df本身

来自分类Dev

如何从熊猫数据框中满足条件的位置获得上一行

来自分类Dev

如果数据的每一行都分开了,是否有一种方法可以解析R中的数据?

来自分类Dev

如何使数据框中的每一行的每一列都有一个值?

来自分类Dev

如何在每一行中找到包含列表的熊猫数据框列的标准偏差?

来自分类Dev

如何转置熊猫数据框中的一行并创建一列?

来自分类Dev

如何从熊猫数据框中删除一行?

来自分类Dev

如何从熊猫数据框中删除一行?

来自分类Dev

如何在不迭代每一行的情况下访问熊猫数据框中的值

来自分类Dev

如何为一组熊猫数据框正确遍历每一行

来自分类Dev

如何将熊猫数据框的值除以第一行的每一组?

来自分类Dev

熊猫数据框,如何在一行中设置多个列值?

Related 相关文章

  1. 1

    遍历pyspark数据框的行,但将每一行都保留为一个数据框

  2. 2

    如果数据的每一行都分开了,是否可以解析R中的数据?

  3. 3

    如何在数据框中创建新列,其中新列的每一行都是所有先前行的乘法

  4. 4

    如何为熊猫数据框的每一行打印索引值,列名和列数据?

  5. 5

    为熊猫数据框的每一行替换一列中的字符串

  6. 6

    在大熊猫数据框中对代码进行矢量化处理,其中每一行都应视为一个numpy数组

  7. 7

    组中每一行的熊猫条件列值

  8. 8

    如何将熊猫数据框中的每一行乘以不同的值

  9. 9

    如何对熊猫数据框中的每一行进行排序并获取索引?

  10. 10

    如何有效地从熊猫数据框中减去每一行?

  11. 11

    对每一行数据框的列求和,并在多级索引熊猫数据框中添加新列

  12. 12

    是否对每一行都进行更改?

  13. 13

    每一行都无法回声不同

  14. 14

    如果Linter在每一行都抛出错误,该如何工作?

  15. 15

    从数组中提取多个数据列表,其中结果数据中的每一行都引用源数据中的同一单元格

  16. 16

    根据条件更新熊猫数据框中特定列的下一行

  17. 17

    Spark数据框是否像熊猫一样在每一行都有一个“行名”?

  18. 18

    合并数据框的行,其中每一行都是df本身

  19. 19

    如何从熊猫数据框中满足条件的位置获得上一行

  20. 20

    如果数据的每一行都分开了,是否有一种方法可以解析R中的数据?

  21. 21

    如何使数据框中的每一行的每一列都有一个值?

  22. 22

    如何在每一行中找到包含列表的熊猫数据框列的标准偏差?

  23. 23

    如何转置熊猫数据框中的一行并创建一列?

  24. 24

    如何从熊猫数据框中删除一行?

  25. 25

    如何从熊猫数据框中删除一行?

  26. 26

    如何在不迭代每一行的情况下访问熊猫数据框中的值

  27. 27

    如何为一组熊猫数据框正确遍历每一行

  28. 28

    如何将熊猫数据框的值除以第一行的每一组?

  29. 29

    熊猫数据框,如何在一行中设置多个列值?

热门标签

归档