使用 Pandas 数据框中的值作为另一个数据框的列名

3

这是我的第一个数据框。

Date        0   1   2   3   
2003-01-31  CA  KY  ID  CO
2003-02-28  CA  KY  HI  CO 
2003-03-31  CA  KY  CO  HI 

这是我的第二个数据框。

Date        CA  KY  ID  CO  HI                                            
2003-01-31   5   3   4   5   1 
2003-02-28   2   7   8   4   5  
2003-03-31   6   3   9   3   5 

如何将这个数据框输出为结果?

Date         0   1   2   3                                                
2003-01-31   5   3   4   5
2003-02-28   2   7   5   4
2003-03-31   6   3   3   5

我想知道是否有一种方法可以使用整个数据框作为另一个数据框的索引,而不必循环遍历所有日期/列。

欢迎来到 StackOverflow 社区!看起来您已经阅读了我们的准则(https://stackoverflow.com/help/how-to-ask),因为您的问题对于新用户来说格式非常好!此外,请不要忘记在收到建议的答案后进行投票,并将问题标记为解决。或者,如果您的问题长时间未被回答,但您找到了解决方案,请毫不犹豫地与社区分享! - AlexZeDim
2个回答

1
你可以在这里使用 df.lookupdf.apply
# <b>If `Date` is not index.</b>
# df1.set_index('Date')
#              0   1   2   3
# Date
# 2003-01-31  CA  KY  ID  CO
# 2003-02-28  CA  KY  HI  CO
# 2003-03-31  CA  KY  CO  HI

# df2.set_index('Date')
#             CA  KY  ID  CO  HI
# Date
# 2003-01-31   5   3   4   5   1
# 2003-02-28   2   7   8   4   5
# 2003-03-31   6   3   9   3   5

def f(x):
    return <b>df2.lookup(x.index, x)</b>

df1.apply(f)
# df1.apply(lambda x: <b>df2.lookup(x.index, x)</b>

            0  1  2  3
Date
2003-01-31  5  3  4  5
2003-02-28  2  7  5  4
2003-03-31  6  3  3  5

0

这将打印出数据框df的值和数据框df1的列名。

print(df.rename(columns={i:j for i,j in zip(df.columns.tolist(),df1.columns.tolist())}))

如果您想使更改永久生效,请添加参数 inplace=TRUE

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接