Python 如何替换缺少的列值?

Python 如何替换缺少的列值?,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据集,其列的前两个值明显缺失,我无法更改它! 以下是数据集打印: data/hora HumExamRoom HumTechRoom Machine TempExamRoom TempTechRoom 0 NaN 2017-08-18\t09:22:33\t65.9 74034 NaN NaN 1

我有一个数据集,其列的前两个值明显缺失,我无法更改它! 以下是数据集打印:

                 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
谢谢你的帮助

试试看:

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

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

您的问题是包含空格(空白、制表符或emtpy字符串)的两个单元格。一般来说,在与
'
进行比较之前,只需使用
str.strip
。您可以直接使用
loc
和布尔掩码在
'


我已经解决了自己的问题。下面是:

我们无法更改数据帧,因为它实际上是数据帧的副本。因此,我们恳求的方法不起作用——去理解为什么要检查

因此,我必须直接更改数据帧
df
,它来自
df_74034
。我刚刚申请了:

    df.reset_index(level=0, inplace=True) 
df_74034.rename(index=str, columns={"index": "data/hora"}, inplace=True)
然后我打印了
df_74034
,得到了他们的索引,一个so:

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

我知道应该有一种更优雅、更聪明的方式来做我所做的事情。但这对我很有效

谢谢你的评论。我很感激。听着,我对“HumTechRoom”一栏中的所有信息不感兴趣,只对与日期/时间相对应的部分感兴趣。我只想更改“data/hora”列的单元格0和1的值。
df[missing_hour]['data/hora]
将抛出一个警告。使用
df.loc[missing,'data/hora']
代替。Marlon,您要解决的问题是未匹配的字符串
2017-08-18\t09:22:33\t65.9
?能否请您指定所需的输出?谢谢您的评论。“我很感激,”维克多·胡戈博格斯说。不,我要解决的问题是更改列“data/hora”中前两行的值。顺便说一句,不幸的是,它不起作用,@QuangHoang。对我来说,这是一个先生为什么。嗨!谢谢你的帖子。技术室中的“t”是什么?无论如何,我已经用
df_74034.HumTechRoom
替换了它,但它不起作用。
 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