更改和更新 pandas 数据框中的值
Change and update values in a pandas dataframe
我正在处理一个更大的数据框,我需要 select 一个时间间隔,修改值并在此数据框中更新它们:
df = pd.DataFrame({'datetime': ['2020-09-01T00:15:00.000000000', '2020-09-01T00:30:00.000000000',
'2020-09-01T00:45:00.000000000', ...,
'2020-09-30T23:30:00.000000000', '2020-09-30T23:45:00.000000000',
'2020-10-01T00:00:00.000000000'],
'p': [407.4 , 410.76, 411.6 , ..., 478.8 , 456.12, 451.08],
'q': [47.88, 52.08, 53.76, ..., 77.28, 68.04, 63.84]})
为此,我 select 从函数 pd.between_time
中编辑了所需的间隔,修改了值并将它们存储在较小的数据框中。:
df1 = (df.between_time(start_time='07:15:00',end_time='17:00:00')).reset_index()
现在我想将这些值“粘贴”到我更大的数据框中。我怎么能那样做?我测试了函数 pd.uptade
、pd.merge
、pd.join
,但我一定是错误地应用了它们,因为有信息丢失:
df.update(df1)
也许您可以使用 np.where 来更新值?
例如,我创建了新列,但您可以覆盖旧列:
df.datetime = pd.to_datetime(df.datetime)
df.set_index('datetime', inplace = True)
df['new_p'] = np.where(df.index.isin(df.between_time(start_time='00:15:00',end_time='00:30:00').index), 99999, df['p'])
输出:
我正在处理一个更大的数据框,我需要 select 一个时间间隔,修改值并在此数据框中更新它们:
df = pd.DataFrame({'datetime': ['2020-09-01T00:15:00.000000000', '2020-09-01T00:30:00.000000000',
'2020-09-01T00:45:00.000000000', ...,
'2020-09-30T23:30:00.000000000', '2020-09-30T23:45:00.000000000',
'2020-10-01T00:00:00.000000000'],
'p': [407.4 , 410.76, 411.6 , ..., 478.8 , 456.12, 451.08],
'q': [47.88, 52.08, 53.76, ..., 77.28, 68.04, 63.84]})
为此,我 select 从函数 pd.between_time
中编辑了所需的间隔,修改了值并将它们存储在较小的数据框中。:
df1 = (df.between_time(start_time='07:15:00',end_time='17:00:00')).reset_index()
现在我想将这些值“粘贴”到我更大的数据框中。我怎么能那样做?我测试了函数 pd.uptade
、pd.merge
、pd.join
,但我一定是错误地应用了它们,因为有信息丢失:
df.update(df1)
也许您可以使用 np.where 来更新值? 例如,我创建了新列,但您可以覆盖旧列:
df.datetime = pd.to_datetime(df.datetime)
df.set_index('datetime', inplace = True)
df['new_p'] = np.where(df.index.isin(df.between_time(start_time='00:15:00',end_time='00:30:00').index), 99999, df['p'])
输出: