gpt4 book ai didi

python - 当 'index length mismatch' 时,将索引从 DataFrame 复制到第二帧

转载 作者:太空宇宙 更新时间:2023-11-03 15:18:42 26 4
gpt4 key购买 nike

我有一个 DataFrame df1(索引作为日期时间)和 df2 有很多列,不同长度的索引。
我需要结合 df1df2,替换 df2 中的索引。结果出现了 df3

df1
T1
2011-09-01 00:00:00 10
2011-09-01 00:10:00 20
2011-09-01 00:20:00 30
2011-09-01 00:30:00 40

df2
T2 T3
0 1.1 2.0
1 1.2 3.0
2 1.3 4.0

df3
T1 T2 T3
2011-09-01 00:00:00 10 1.1 2.0
2011-09-01 00:10:00 20 1.2 3.0
2011-09-01 00:20:00 30 1.3 4.0
2011-09-01 00:30:00 40 Nan Nan

我想尝试concat、join、merge、append,但这些似乎都不合适。
使用 set_index 导致出现错误:长度不匹配。

我最终尝试了这个:

  df3=pd.DataFrame(df2,index=df1.index,copy=True)

我从 df2 得到了所需的索引和列,但它们是空的。

最佳答案

这是一种方法:

In [32]: from pandas import DataFrame, date_range, concat

In [33]: from numpy.random import randn

In [34]: df = DataFrame(randn(5, 1), index=date_range('20010101', periods=5), columns=['A'])

In [35]: df2 = DataFrame(randn(3, 2), columns=list('BC'))

In [36]: concat([df, df2.set_index(df.index[:len(df2)])], axis=1)
Out[36]:
A B C
2001-01-01 -0.043 0.759 -0.125
2001-01-02 -1.377 0.895 0.629
2001-01-03 0.263 -0.007 -0.515
2001-01-04 1.546 NaN NaN
2001-01-05 -0.657 NaN NaN

您也可以使用 DataFrame.join() 来完成此操作,以获得更短的代码:

In [7]: df.join(df2.set_index(df.index[:len(df2)]))
Out[7]:
A B C
2001-01-01 -0.607 -0.038 0.593
2001-01-02 0.573 0.399 -0.627
2001-01-03 0.319 0.312 -0.152
2001-01-04 -1.671 NaN NaN
2001-01-05 -1.589 NaN NaN

关于python - 当 'index length mismatch' 时,将索引从 DataFrame 复制到第二帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18391435/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com