Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据条件将lamba应用于df_Python_Pandas - Fatal编程技术网

Python 根据条件将lamba应用于df

Python 根据条件将lamba应用于df,python,pandas,Python,Pandas,如果我能用一些随机数据组成一个df import numpy as np import pandas as pd np.random.seed(11) rows,cols = 24,3 data = np.random.rand(rows,cols) tidx = pd.date_range('2019-01-01', periods=rows, freq='H') df = pd.DataFrame(data, columns=['Temperature1','Temperature2'

如果我能用一些随机数据组成一个df

import numpy as np
import pandas as pd
np.random.seed(11)

rows,cols = 24,3
data = np.random.rand(rows,cols) 
tidx = pd.date_range('2019-01-01', periods=rows, freq='H') 
df = pd.DataFrame(data, columns=['Temperature1','Temperature2','Value'], index=tidx)
仅当df索引小时数小于6时,如何使用lamba函数向列Temperature1和Temperature2的每行添加5000

如果我使用

for hour in df.index.hour:
    if hour < 6:# and name contains 'Temperature'
        df = df.apply(lambda x: x + 5000)
上面的代码不正确,它将df中的所有行添加5000。非常感谢任何提示。

您可以使用loc:


布尔选择包含温度

m=df.columns.str.contains('Temperature')
m

为answerdf.index.hour选择带有hourtanks@Quang的行将不起作用,因为它是范围索引,您可以尝试以下操作:df[hour]=df.reset_index[index].dt。hour@cpernul从OP的示例中,它是datetime索引。@QuangHoang,如果我想更改temp_cols的整个值,如果时间是早上6点。你能给点小费吗?例如,如果hour==6,df.loc[df.index.hour==6,temp\u cols]==68,则这不起作用。没有错误,它只是没有改变任何东西。事实上,我已经弄明白了:这是df.loc[df.index.hour==6,temp\u cols]=68
                     Temperature1  Temperature2     Value
2019-01-01 00:00:00   5000.180270   5000.019475  0.463219
2019-01-01 01:00:00   5000.724934   5000.420204  0.485427
2019-01-01 02:00:00   5000.012781   5000.487372  0.941807
2019-01-01 03:00:00   5000.850795   5000.729964  0.108736
2019-01-01 04:00:00   5000.893904   5000.857154  0.165087
2019-01-01 05:00:00   5000.632334   5000.020484  0.116737
2019-01-01 06:00:00      0.316367      0.157912  0.758980
2019-01-01 07:00:00      0.818275      0.344624  0.318799
2019-01-01 08:00:00      0.111661      0.083953  0.712726
2019-01-01 09:00:00      0.599543      0.055674  0.479797
2019-01-01 10:00:00      0.401676      0.847979  0.717849
2019-01-01 11:00:00      0.602064      0.552384  0.949102
2019-01-01 12:00:00      0.986673      0.338054  0.239875
2019-01-01 13:00:00      0.796436      0.063686  0.364616
2019-01-01 14:00:00      0.070023      0.319368  0.070383
2019-01-01 15:00:00      0.290264      0.790101  0.905400
2019-01-01 16:00:00      0.792621      0.561819  0.616018
2019-01-01 17:00:00      0.361484      0.168817  0.436241
2019-01-01 18:00:00      0.732825      0.062888  0.020733
2019-01-01 19:00:00      0.770548      0.299952  0.701164
2019-01-01 20:00:00      0.734668      0.932905  0.400328
2019-01-01 21:00:00      0.358438      0.806567  0.764491
2019-01-01 22:00:00      0.652615      0.810967  0.642215
2019-01-01 23:00:00      0.957444      0.333874  0.738253
m=df.columns.str.contains('Temperature')
m
df.loc[df.index.hour<6, m] += 5000
df