>source

열의 처음 두 값이 누락 된 데이터 세트가 있으며 변경할 수 없습니다! 다음은 데이터 세트 인쇄입니다.

                data/hora  HumExamRoom                      HumTechRoom Machine  TempExamRoom TempTechRoom
0                                NaN  2017-08-18\t09:22:33\t65.9   74034           NaN          NaN
1                                NaN  2017-10-03\t11:08:26\t60.5   74034           NaN          NaN
2  2018-02-17\t01:45:24          NaN                             69.7   74034           NaN          NaN
3  2018-02-17\t01:45:55          NaN                             67.5   74034           NaN          NaN
4  2018-02-17\t01:46:29          NaN                             65.4   74034           NaN          NaN
5  2018-02-17\t01:47:20          NaN                             63.3   74034           NaN          NaN
6  2018-02-17\t01:48:35          NaN                             61.3   74034           NaN          NaN
7  2018-02-17\t01:49:08          NaN                             63.4   74034           NaN          NaN
8  2018-02-17\t01:49:31          NaN                             65.5   74034           NaN          NaN
9  2018-02-17\t01:49:55          NaN                             67.6   74034           NaN          NaN

보시다시피, 'data/hora'열의 0과 1 행에 값이 없습니다. 3 열의 정보로 대체하고 싶습니다. 많은 것을 시도했지만 모두 실패했습니다.

다음과 같습니다 :

df_74034.replace({df_74034.iloc[0,0] : '2017-08-18\t09:22:33'}, inplace=True)

그런 다음 시도했습니다 :

df_74034.at[0, 'data/hora'] = 0

그리고 나는 얻었다 :

A value is trying to be set on a copy of a slice from a DataFrame
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  return super(DataFrame, self).rename(**kwargs)
/home/marlon/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py:2584: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  self.loc[index, col] = value

도움을 주셔서 감사합니다!


  • 답변 # 1

    문제는 공백 (공백, 탭 또는 빈 문자열)을 포함하는 두 개의 셀입니다. 일반적으로 처리하려면 str.strip 를 사용하십시오.   '' 와 비교하기 전에 . loc 를 사용하여 직접 할당 할 수 있습니다   '' 와 동일한 부울 마스크

    df_74034.loc[df_74034['data/hora'].str.strip().eq(''), 'data/hora'] = t.HumTechRoom
    
    Out[1891]:
                        data/hora  HumExamRoom                 HumTechRoom  \
    0  2017-08-18\t09:22:33\t65.9          NaN  2017-08-18\t09:22:33\t65.9
    1  2017-10-03\t11:08:26\t60.5          NaN  2017-10-03\t11:08:26\t60.5
    2        2018-02-17\t01:45:24          NaN                        69.7
    3        2018-02-17\t01:45:55          NaN                        67.5
    4        2018-02-17\t01:46:29          NaN                        65.4
    5        2018-02-17\t01:47:20          NaN                        63.3
    6        2018-02-17\t01:48:35          NaN                        61.3
    7        2018-02-17\t01:49:08          NaN                        63.4
    8        2018-02-17\t01:49:31          NaN                        65.5
       Machine  TempExamRoom  TempTechRoom
    0    74034           NaN           NaN
    1    74034           NaN           NaN
    2    74034           NaN           NaN
    3    74034           NaN           NaN
    4    74034           NaN           NaN
    5    74034           NaN           NaN
    6    74034           NaN           NaN
    7    74034           NaN           NaN
    8    74034           NaN           NaN
    
    

  • 답변 # 2

    시도 :

    missing_hour = df['data/hora'].isna()
    df.loc[missing_hour, 'data/hora'] = df.loc[missing_hour,'HumTechRoom']
    
    

  • 답변 # 3

    내 문제를 해결했습니다. 여기에 간다 :

    실제로 데이터 프레임의 복사본이기 때문에 데이터 프레임을 변경할 수 없습니다. 따라서 http://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html을 확인하는 이유를 이해하기 위해 우리가 고용 한 방법이 효과가 없었습니다.

    따라서 데이터 프레임 df 를 직접 변경해야했습니다  어느 df_74034 에서  온. 방금 적용한 내용 :

       df.reset_index(level=0, inplace=True) 
    df_74034.rename(index=str, columns={"index": "data/hora"}, inplace=True)
    
    
    그런 다음 df_74034 를 인쇄했습니다.  색인을 얻었습니다.

    df.loc[69333, 'index'] = '2017-08-18\t09:22:33'
    df.loc[69334, 'index'] = '2017-10-03\t11:08:26' 
    df.loc[69333, 'HumTechRoom'] = '65.9' 
    df.loc[69334, 'HumTechRoom'] = '60.5'
    
    

    나를 주었다 :

    data/hora  HumExamRoom HumTechRoom Machine  TempExamRoom TempTechRoom
    69333  2017-08-18\t09:22:33          NaN        65.9   74034           NaN          NaN
    69334  2017-10-03\t11:08:26          NaN        60.5   74034           NaN          NaN
    69335  2018-02-17\t01:45:24          NaN        69.7   74034           NaN          NaN
    69336  2018-02-17\t01:45:55          NaN        67.5   74034           NaN          NaN
    69337  2018-02-17\t01:46:29          NaN        65.4   74034           NaN          NaN
    69338  2018-02-17\t01:47:20          NaN        63.3   74034           NaN          NaN
    69339  2018-02-17\t01:48:35          NaN        61.3   74034           NaN          NaN
    69340  2018-02-17\t01:49:08          NaN        63.4   74034           NaN          NaN
    69341  2018-02-17\t01:49:31          NaN        65.5   74034           NaN          NaN
    69342  2018-02-17\t01:49:55          NaN        67.6   74034           NaN          NaN
    
    

    내가 한 일을하는 데 더 우아하고 똑똑한 방법이 있어야한다는 것을 안다. 그러나 그것은 나를 위해 일했습니다.

관련 자료

  • 이전 c# - ASPNet Core 22에서 ApplicationDbContext를 뷰에 바인딩하는 방법
  • 다음 데몬 프로세스 Android Studio 341을 시작할 수 없습니다