【问题标题】:Python Pandas slice with nested for loop condition具有嵌套 for 循环条件的 Python Pandas 切片
【发布时间】:2021-04-29 10:07:42
【问题描述】:

我有一个这样的数据框:

df = pd.DataFrame({'A':[1,2,3], 'B':[4,5,6],'C':[7,8,9],'D':[10,11,12]})

还有一个列表,这里是 x,它的长度可能会像这样变化:

x = [1,4]
x = [2,5,8]

我想像这样根据 x 中的值对 df 进行切片

if len(x) == 1:
   df[df['A'] == x[0]]
elif len(x) == 2:
   df[(df['A'] == x[0]) & (df['B'] == x[1])]
elif len(x) == 3:
   df[(df['A'] == x[0]) & (df['B'] == x[1]) & (df['C'] == x[2])]

你知道一个更好的解决方案吗?像下面这样的嵌套 for 循环实际上可以工作?

df[(df.iloc[:,i] == x[i]) for i in range(len(x))]

谢谢大家!

【问题讨论】:

    标签: python-3.x pandas slice


    【解决方案1】:

    试试:

    def list_slice(df,x): 
        return df[df.iloc[:, :len(x)].eq(x).all(1)]
    
    list_slice(df, [1,4])
    #    A  B  C   D
    # 0  1  4  7  10
    
    list_slice(df, [2,5,8])
    #    A  B  C   D
    # 1  2  5  8  11
    

    【讨论】:

      猜你喜欢
      • 2020-03-06
      • 2019-04-17
      • 2021-08-21
      • 2012-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-05
      • 1970-01-01
      相关资源
      最近更新 更多