Python 根据条件将lamba应用于df
如果我能用一些随机数据组成一个dfPython 根据条件将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'
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