>

데이터 :

f a b
5 0 1
5 1 3
5 1 3
5 6 3
5 0 0
5 1 5
5 0 0

두 열이 0 인 행을 찾는 방법을 알고 있습니다 을 None 로 설정  반면에 미스터리입니다.

df_o[(df_o['a'] == 0) & (df_o['d'] == 0)]
# set a and b to None

예상 결과 :

f a b 
5 0 1
5 1 3
5 1 3
5 6 3
5 None None
5 1 5
5 None None


  • 답변 # 1

    None 숫자 값으로 작업하는 경우   NaN 로 변환   float 에 대한 정수  의도적으로 :

    df_o.loc[(df_o['a'] == 0) & (df_o['b'] == 0), ['a','b']] = None
    print (df_o)
         a    b
    0  0.0  1.0
    1  1.0  3.0
    2  1.0  3.0
    3  6.0  3.0
    4  NaN  NaN
    5  1.0  5.0
    6  NaN  NaN
    
    
    DataFrame.all 와 다른 솔루션  모든 True 경우 확인 axis=1 가있는 행당 s :

    df_o.loc[(df_o[['a', 'b']] == 0).all(axis=1), ['a','b']] = None
    print (df_o)
         a    b
    0  0.0  1.0
    1  1.0  3.0
    2  1.0  3.0
    3  6.0  3.0
    4  NaN  NaN
    5  1.0  5.0
    6  NaN  NaN
    
    

    세부 정보:

    print ((df_o[['a', 'b']] == 0))
           a      b
    0   True  False
    1  False  False
    2  False  False
    3  False  False
    4   True   True
    5  False  False
    6   True   True
    print ((df_o[['a', 'b']] == 0).all(axis=1))
    0    False
    1    False
    2    False
    3    False
    4     True
    5    False
    6     True
    dtype: bool
    
    

  • 답변 # 2

    내가 생각할 수있는 한 가지 방법은 다음과 같습니다. 데이터 프레임의 추가 사본을 작성하고 기본 데이터 프레임에서 값을 없음으로 설정하면서 둘 다 개별적으로 확인하십시오. 가장 깨끗한 해결책은 아니지만 :

    import pandas as pd
    import numpy as np
    df = pd.DataFrame()
    df['f'] = [5,5,5,5,5,5,5]
    df['a'] = [0,1,1,6,0,1,0]
    df['b'] = [1,3,3,3,0,5,0]
    df1 = df.copy()
    df['a'] = np.where((df.a == 0) & (df.b == 0), None, df.a)
    df['b'] = np.where((df1.a == 0) & (df1.b == 0), None, df.b)
    print(df)
    
    

    출력 :

      f     a     b
    0  5     0     1
    1  5     1     3
    2  5     1     3
    3  5     6     3
    4  5  None  None
    5  5     1     5
    6  5  None  None
    
    

  • 답변 # 3

    df.replace(0, np.nan)  -NaN을 얻기 위해 (아마도 더 유용하다) 와이즈 비즈  -실제로 원하는 것

  • 답변 # 4

    이 작업을 수행하는 가장 우아한 방법은 아니지만 이것이 도움이 될 수 있습니다

    df.replace(0, 'None')
    
    

    아웃 :

    import pandas as pd
    data = {'a': [0,1,1,6,0,1,0],
            'b':[1,3,3,3,0,5,0]}
    df_o = pd.DataFrame.from_dict(data)
    df_None = df_o[(df_o['a'] == 0) & (df_o['b'] == 0)]
    df_o.loc[df_None.index,:] = None
    print(df_o)
    
    

  • 답변 # 5

    이것이 내가하는 방법입니다 :

       a    b
    0  0.0  1.0
    1  1.0  3.0
    2  1.0  3.0
    3  6.0  3.0
    4  NaN  NaN
    5  1.0  5.0
    6  NaN  NaN
    
    

    출력 :

    import pandas as pd
    
    a = pd.Series([0, 1, 1, 6, 0, 1, 0])
    b = pd.Series([1, 3, 3, 3, 0, 5 ,0])
    data = pd.DataFrame({'a': a, 'b': b})
    
    v = [[data[i][j] for i in data] == [0, 0] for j in range(len(data['a']))]   # spot null rows
    a = [None if v[i] else a[i] for i in range(len(a))]
    b = [None if v[i] else b[i] for i in range(len(b))]
    data = pd.DataFrame({'a': a, 'b': b})
    
    print(data)
    
    
    a b 0 0.0 1.0 1 1.0 3.0 2 1.0 3.0 3 6.0 3.0 4 NaN NaN 5 1.0 5.0 6 NaN NaN

관련 자료

  • 이전 php - 명령 행을 사용하여 일반 텍스트를 파일 우분투에 삽입
  • 다음 windows - SC 빈 경로 생성 오류