我试图将日期范围匹配的pandas DataFrames df1.Number
到df2.Number
的所有值相加。
我创建了一个df1
,看起来像这样:
Start End Number
0 2000-01-01 2000-01-08 1
1 2000-01-02 2000-01-09 2
2 2000-01-03 2000-01-10 3
3 2000-01-04 2000-01-11 4
4 2000-01-05 2000-01-12 5
5 2000-01-06 2000-01-13 6
6 2000-01-07 2000-01-14 7
和看起来像这样的df2:
Dates Number
0 2000-01-01
1 2000-01-02
2 2000-01-03
3 2000-01-04
4 2000-01-05
5 2000-01-06
6 2000-01-07
7 2000-01-08
8 2000-01-09
9 2000-01-10
10 2000-01-11
11 2000-01-12
12 2000-01-13
13 2000-01-14
如果行中的日期范围匹配,我正在尝试将Number
中的df1
分配给Number
中的df2
我用于第一行的代码是:
i = pd.date_range(df1.Start[0], df1.End[0])
if df2.Dates in i:
df2.Number.assign(df1.Number)
,它不会引发错误,但也不会为Number
分配任何内容。预期输出应如下:
Dates Number
0 2000-01-01 1
1 2000-01-02 1,2
2 2000-01-03 1,2,3
3 2000-01-04 1,2,3,4
4 2000-01-05 1,2,3,4,5
5 2000-01-06 1,2,3,4,5,6
6 2000-01-07 1,2,3,4,5,6,7
7 2000-01-08 1,2,3,4,5,6,7
8 2000-01-09 2,3,4,5,6,7
9 2000-01-10 3,4,5,6,7
10 2000-01-11 4,5,6,7
11 2000-01-12 5,6,7
12 2000-01-13 6,7
13 2000-01-14 7
有人可以建议为什么不分配任何内容,还是可以对所有行执行此操作的代码吗?谢谢。
答案 0 :(得分:4)
使用import ctypes
import os
class PyStruct(ctypes.Structure):
_fields_ = [('x', ctypes.c_int),
('y', ctypes.c_int),
('msg', ctypes.c_char_p)]
lib = ctypes.cdll.LoadLibrary(os.path.abspath('/path/to/libstruct.so'))
_init_struct = lib.init_struct
_init_struct.argtypes = [ctypes.c_int, ctypes.c_int, ctypes.c_char_p]
_init_struct.restype = ctypes.POINTER(PyStruct)
_fini_struct = lib.fini_struct
_fini_struct.argtypes = [ctypes.POINTER(PyStruct)]
myStruct = _init_struct(1, 4, ctypes.c_char_p(b'hello world'))
print(myStruct.contents.x, myStruct.contents.y, myStruct.contents.msg)
# when you are done with myStruct
_fini_struct(myStruct)
广播的numpy
dot
答案 1 :(得分:2)
这是一种方法:
Allowed Origins
注意
确保日期采用日期时间格式:
,