Pandas 在具有不同列名的熊猫中添加列
嘿,这里的问题是,过去400天的4个不同股票的4个数据帧,要连接成一个,它们在不同的指数中,因为从quandl对每个股票的原始拉动开始时数据的开始日期不同 每个数据帧看起来都类似于此: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
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)在某些方面不起作用