Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.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 如何通过将一个变量与另一个变量进行匹配来创建一个新列,并让它重复,直到R中的第一个变量发生变化? 受体 年 月 白天 小时 小时公司 拉特 朗 高度 压力 日期 1. 2018 1. 3. 19 0 31.768 -106.501 500 835.6 2018-01-03 19:00:00 1. 2018 1. 3. 18 -1 31.628 -106.350 508.8 840.5 2018-01-03 18:00:00 1. 2018 1. 3. 17 -2 31.489 -106.180 526.2 839.4 2018-01-03 17:00:00 1. 2018 1. 3. 16 -3 31.372 -105.974 547.6 836.8 2018-01-03 16:00:00 1. 2018 1. 3. 15 -4 31.289 -105.731 555.3 829.8 2018-01-03 15:00:00 1. 2018 1. 3. 14 -5 31.265 -105.462 577.8 812.8 2018-01-03 14:00:00 1. 2018 1. 3. 13 -6 31.337 -105.175 640 793.9 2018-01-03 13:00:00 1. 2018 1. 3. 12 -7 31.492 -104.897 645.6 809.2 2018-01-03 12:00:00 1. 2018 1. 3. 11 -8 31.671 -104.700 686.8 801 2018-01-03 11:00:00 1. 2018 1. 3. 10 -9 31.913 -104.552 794.2 795.8 2018-01-03 10:00:00 2. 2018 1. 4. 19 0 31.768 -106.501 500 830.9 2018-01-04 19:00:00 2. 2018 1. 4. 18 -1 31.904 -106.635 611.5 819.5 2018-01-04 18:00:00 2. 2018 1. 4. 17 -2 32.070 -106.749 709.7 808 2018-01-04 17:00:00 2. 2018 1. 4. 16 -3 32.223 -106.855 787.3 794.9 2018-01-04 16:00:00_Python_R_Dataframe_Reticulate - Fatal编程技术网

Python 如何通过将一个变量与另一个变量进行匹配来创建一个新列,并让它重复,直到R中的第一个变量发生变化? 受体 年 月 白天 小时 小时公司 拉特 朗 高度 压力 日期 1. 2018 1. 3. 19 0 31.768 -106.501 500 835.6 2018-01-03 19:00:00 1. 2018 1. 3. 18 -1 31.628 -106.350 508.8 840.5 2018-01-03 18:00:00 1. 2018 1. 3. 17 -2 31.489 -106.180 526.2 839.4 2018-01-03 17:00:00 1. 2018 1. 3. 16 -3 31.372 -105.974 547.6 836.8 2018-01-03 16:00:00 1. 2018 1. 3. 15 -4 31.289 -105.731 555.3 829.8 2018-01-03 15:00:00 1. 2018 1. 3. 14 -5 31.265 -105.462 577.8 812.8 2018-01-03 14:00:00 1. 2018 1. 3. 13 -6 31.337 -105.175 640 793.9 2018-01-03 13:00:00 1. 2018 1. 3. 12 -7 31.492 -104.897 645.6 809.2 2018-01-03 12:00:00 1. 2018 1. 3. 11 -8 31.671 -104.700 686.8 801 2018-01-03 11:00:00 1. 2018 1. 3. 10 -9 31.913 -104.552 794.2 795.8 2018-01-03 10:00:00 2. 2018 1. 4. 19 0 31.768 -106.501 500 830.9 2018-01-04 19:00:00 2. 2018 1. 4. 18 -1 31.904 -106.635 611.5 819.5 2018-01-04 18:00:00 2. 2018 1. 4. 17 -2 32.070 -106.749 709.7 808 2018-01-04 17:00:00 2. 2018 1. 4. 16 -3 32.223 -106.855 787.3 794.9 2018-01-04 16:00:00

Python 如何通过将一个变量与另一个变量进行匹配来创建一个新列,并让它重复,直到R中的第一个变量发生变化? 受体 年 月 白天 小时 小时公司 拉特 朗 高度 压力 日期 1. 2018 1. 3. 19 0 31.768 -106.501 500 835.6 2018-01-03 19:00:00 1. 2018 1. 3. 18 -1 31.628 -106.350 508.8 840.5 2018-01-03 18:00:00 1. 2018 1. 3. 17 -2 31.489 -106.180 526.2 839.4 2018-01-03 17:00:00 1. 2018 1. 3. 16 -3 31.372 -105.974 547.6 836.8 2018-01-03 16:00:00 1. 2018 1. 3. 15 -4 31.289 -105.731 555.3 829.8 2018-01-03 15:00:00 1. 2018 1. 3. 14 -5 31.265 -105.462 577.8 812.8 2018-01-03 14:00:00 1. 2018 1. 3. 13 -6 31.337 -105.175 640 793.9 2018-01-03 13:00:00 1. 2018 1. 3. 12 -7 31.492 -104.897 645.6 809.2 2018-01-03 12:00:00 1. 2018 1. 3. 11 -8 31.671 -104.700 686.8 801 2018-01-03 11:00:00 1. 2018 1. 3. 10 -9 31.913 -104.552 794.2 795.8 2018-01-03 10:00:00 2. 2018 1. 4. 19 0 31.768 -106.501 500 830.9 2018-01-04 19:00:00 2. 2018 1. 4. 18 -1 31.904 -106.635 611.5 819.5 2018-01-04 18:00:00 2. 2018 1. 4. 17 -2 32.070 -106.749 709.7 808 2018-01-04 17:00:00 2. 2018 1. 4. 16 -3 32.223 -106.855 787.3 794.9 2018-01-04 16:00:00,python,r,dataframe,reticulate,Python,R,Dataframe,Reticulate,尝试用np.nan填充未更改值的位置,用date(该索引的)填充已更改值的位置,然后使用.ffill() df.receptor.shift().ne(df.receptor)将给出受体值变化的位置。比较上一个值和当前值以查看更改 df['date1'] = np.where(df.receptor.shift().ne(df.receptor), df.date, np.nan) df.date1 = df.date1.ffill() 受体 年 月 白天 小时 小时公司 拉特 朗 高度 压

尝试用
np.nan
填充未更改值的位置,用
date
(该索引的)填充已更改值的位置,然后使用
.ffill()

df.receptor.shift().ne(df.receptor)
将给出受体值变化的位置。比较上一个值和当前值以查看更改

df['date1'] = np.where(df.receptor.shift().ne(df.receptor), df.date, np.nan)
df.date1 = df.date1.ffill()

受体 年 月 白天 小时 小时公司 拉特 朗 高度 压力 日期 日期1 0 1. 2018 1. 3. 19 0 31.768 -106.501 500 835.6 2018-01-03 19:00:00 2018-01-03 19:00:00 1. 1. 2018 1. 3. 18 -1 31.628 -106.350 508.8 840.5 2018-01-03 18:00:00 2018-01-03 19:00:00 2. 1. 2018 1. 3. 17 -2 31.489 -106.180 526.2 839.4 2018-01-03 17:00:00 2018-01-03 19:00:00 3. 1. 2018 1. 3. 16 -3 31.372 -105.974 547.6 836.8 2018-01-03 16:00:00 2018-01-03 19:00:00 4. 1. 2018 1. 3. 15 -4 31.289 -105.731 555.3 829.8 2018-01-03 15:00:00 2018-01-03 19:00:00 5. 1. 2018 1. 3. 14 -5 31.265 -105.462 577.8 812.8 2018-01-03 14:00:00 2018-01-03 19:00:00 6. 1. 2018 1. 3. 13 -6 31.337 -105.175 640 793.9 2018-01-03 13:00:00 2018-01-03 19:00:00 7. 1. 2018 1. 3. 12 -7 31.492 -104.897 645.6 809.2 2018-01-03 12:00:00 2018-01-03 19:00:00 8. 1. 2018 1. 3. 11 -8 31.671 -104.700 686.8 801 2018-01-03 11:00:00 2018-01-03 19:00:00 9 1. 2018 1. 3. 10 -9 31.913 -104.552 794.2 795.8 2018-01-03 10:00:00 2018-01-03 19:00:00 10 2. 2018 1. 4. 19 0 31.768 -106.501 500 830.9 2018-01-04 19:00:00 2018-01-04 19:00:00 11 2. 2018 1. 4. 18 -1 31.904 -106.635 611.5 819.5 2018-01-04 18:00:00 2018-01-04 19:00:00 12 2. 2018 1. 4. 17 -2 32.070 -106.749 709.7 808 2018-01-04 17:00:00 2018-01-04 19:00:00 13 2. 2018 1. 4. 16 -3 32.223 -106.855 787.3 794.9 2018-01-04 16:00:00 2018-01-04 19:00:00
使用
data.table
可以尝试

library(data.table)
setDT(df) #converting into data.frame 
df[,date1 := date[1],receptor] # taking the first date per receptor
df

#Output 

    receptor year month day hour hour.inc    lat      lon height pressure                date               date1
 1:        1 2018     1   3   19        0 31.768 -106.501  500.0    835.6 2018-01-03 19:00:00 2018-01-03 19:00:00
 2:        1 2018     1   3   18       -1 31.628 -106.350  508.8    840.5 2018-01-03 18:00:00 2018-01-03 19:00:00
 3:        1 2018     1   3   17       -2 31.489 -106.180  526.2    839.4 2018-01-03 17:00:00 2018-01-03 19:00:00
 4:        1 2018     1   3   16       -3 31.372 -105.974  547.6    836.8 2018-01-03 16:00:00 2018-01-03 19:00:00
 5:        1 2018     1   3   15       -4 31.289 -105.731  555.3    829.8 2018-01-03 15:00:00 2018-01-03 19:00:00
 6:        1 2018     1   3   14       -5 31.265 -105.462  577.8    812.8 2018-01-03 14:00:00 2018-01-03 19:00:00
 7:        1 2018     1   3   13       -6 31.337 -105.175  640.0    793.9 2018-01-03 13:00:00 2018-01-03 19:00:00
 8:        1 2018     1   3   12       -7 31.492 -104.897  645.6    809.2 2018-01-03 12:00:00 2018-01-03 19:00:00
 9:        1 2018     1   3   11       -8 31.671 -104.700  686.8    801.0 2018-01-03 11:00:00 2018-01-03 19:00:00
10:        1 2018     1   3   10       -9 31.913 -104.552  794.2    795.8 2018-01-03 10:00:00 2018-01-03 19:00:00
11:        2 2018     1   4   19        0 31.768 -106.501  500.0    830.9 2018-01-04 19:00:00 2018-01-04 19:00:00
12:        2 2018     1   4   18       -1 31.904 -106.635  611.5    819.5 2018-01-04 18:00:00 2018-01-04 19:00:00
13:        2 2018     1   4   17       -2 32.070 -106.749  709.7    808.0 2018-01-04 17:00:00 2018-01-04 19:00:00
14:        2 2018     1   4   16       -3 32.223 -106.855  787.3    794.9 2018-01-04 16:00:00 2018-01-04 19:00:00

在计算
日期
列后,考虑基本R的
平均值
,使用
返回每个日期分组的第一个日期时间:


df确保避免列引用的句点限定符,以避免与属性冲突(即
df['receptor']
df['date1']
)。请参阅文档中的警告。这是干净的。今天给我的团队领导留下了深刻的印象。我不处理非常大的数据集,所以我不太使用Datatable。但这是我用DT解决问题的第二个方法。顺便说一句,我并没有因为这件事而受到表扬。我说是保罗骗了我。谢谢@bob0901。有时我发现
data.table
对于此类问题非常方便,这一直是我的首选,实际上我也能够用它处理大型数据集。