Pandas 在具有不同列名的熊猫中添加列

Pandas 在具有不同列名的熊猫中添加列,pandas,dataframe,concatenation,Pandas,Dataframe,Concatenation,嘿,这里的问题是,过去400天的4个不同股票的4个数据帧,要连接成一个,它们在不同的指数中,因为从quandl对每个股票的原始拉动开始时数据的开始日期不同 每个数据帧看起来都类似于此: a b c d e 545 539.00 558.00 535.00 539.00 6.50 546 549.00 550.48 535.00 549.00 10.00 547 549.50 559.00 539.00

嘿,这里的问题是,过去400天的4个不同股票的4个数据帧,要连接成一个,它们在不同的指数中,因为从quandl对每个股票的原始拉动开始时数据的开始日期不同

每个数据帧看起来都类似于此:

          a       b       c       d      e
545  539.00  558.00  535.00  539.00   6.50
546  549.00  550.48  535.00  549.00  10.00
547  549.50  559.00  539.00  549.50   0.50
548  570.00  570.00  535.00  570.00  20.50
这是:

         g     h     i      j     k
461  4.480  4.62  4.45  4.480  0.02
462  4.420  4.55  4.42  4.420  0.05
我的问题是当我这样做的时候

result = pd.concat([clin, avo, aph, abc], axis=1, ignore_index=True)
结果是:

  0   1   2   3   4      5     6     7      8     9      10     11     12  \
461  NaN NaN NaN NaN NaN  4.480  4.62  4.45  4.480  0.02    NaN    NaN    NaN   
462  NaN NaN NaN NaN NaN  4.420  4.55  4.42  4.420  0.05    NaN    NaN    NaN   
463  NaN NaN NaN NaN NaN  3.920  4.50  3.70  3.920  0.50    NaN    NaN    NaN   
464  NaN NaN NaN NaN NaN  3.920  3.95  3.90  3.920  0.00    NaN    NaN    NaN   
465  NaN NaN NaN NaN NaN  3.780  4.15  3.78  3.780  0.15    NaN    NaN    
基本上,生成的数据帧不是400行20个特性,我理解这是因为其他数据帧中的列会有Nan,因为名称不同,但我不知道如何连接它们,不管怎样,我需要它最终基本上是一个非常粗糙的连接
我尝试了
reset\u index
,但是现在想想当然不行了,因为它不会在没有列a的其他数据帧中为列a创建值如果你不关心索引,那么你可以:

In [7]:

pd.concat([df.reset_index(drop=True),df1.reset_index(drop=True)], axis=1)
Out[7]:
       a       b    c      d     e     g     h     i     j     k
0  539.0  558.00  535  539.0   6.5  4.48  4.62  4.45  4.48  0.02
1  549.0  550.48  535  549.0  10.0  4.42  4.55  4.42  4.42  0.05
2  549.5  559.00  539  549.5   0.5   NaN   NaN   NaN   NaN   NaN
3  570.0  570.00  535  570.0  20.5   NaN   NaN   NaN   NaN   NaN

ignore_index
忽略标签名称,因为
axis=1
它忽略列名,如果您只想按列添加,那么您可以对列表中的每个df调用
reset_index(drop=True)
,感谢回复人,但我之前已经为所有四个数据帧重置了索引,然后用axis=1调用concat,但它仍然有886行而不是400行,这是不应该发生的,你做了类似于我的答案的事情吗?你确定最大的df是400行吗?是的,另一个答案是df.reset_index(drop=True)从每个数据帧的括号内的concat函数中,我不知道这与在括号外调用reset indux有什么不同,但是,嘿,什么有效?我想,像大多数pandas函数一样,函数返回修改后的df的副本,除非你执行了
df=df.reset\u index(drop=True)
df.reset\u index(drop=True,inplace=True)
然后您在原始DFS上进行操作这很有帮助,实现得很完美,尽管我尝试了这一点;在调用concat函数之前,我调用了每个数据帧。reset\u index(drop=True)在某些方面不起作用