DataFrame不会为新的pandas列分配值

时间:2018-12-17 15:21:10

标签: python pandas

我试图将日期范围匹配的pandas DataFrames df1.Numberdf2.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 

有人可以建议为什么不分配任何内容,还是可以对所有行执行此操作的代码吗?谢谢。

2 个答案:

答案 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

注意

确保日期采用日期时间格式:

,