【问题标题】:Python how to get values in one dataframe from the other dataframePython如何从另一个数据框中获取一个数据框中的值
【发布时间】:2016-11-22 04:37:45
【问题描述】:
import pandas as pd
import numpy as np

df1=pd.DataFrame(np.arange(25).reshape((5,5)),index=pd.date_range('2015/01/01',periods=5,freq='D')))  
df1['trading_signal']=[1,-1,1,-1,1]

df1

             0   1   2   3   4  trading_signal
2015-01-01   0   1   2   3   4         1
2015-01-02   5   6   7   8   9        -1
2015-01-03  10  11  12  13  14         1
2015-01-04  15  16  17  18  19        -1
2015-01-05  20  21  22  23  24         1

和 df2

                      0   1   2   3   4  
Date       Time                                        
2015-01-01 22:55:00   0   1   2   3   4             
           23:55:00   5   6   7   8   9               
2015-01-02 00:55:00  10  11  12  13  14               
           01:55:00  15  16  17  18  19               
           02:55:00  20  21  22  23  24  

如何从 df1 获取 trading_signal 的值并将其发送到 df2。 我想要这样的输出:

                      0   1   2   3   4  trading_signal
Date       Time                                        
2015-01-01 22:55:00   0   1   2   3   4          1    
           23:55:00   5   6   7   8   9          1     
2015-01-02 00:55:00  10  11  12  13  14         -1     
           01:55:00  15  16  17  18  19         -1   
           02:55:00  20  21  22  23  24         -1

【问题讨论】:

  • 欢迎来到 SO!,请编辑帖子以提高可读性
  • 你能看一下你自己的帖子吗?
  • 对不起...这是我第一次登录所以...
  • 显示你到目前为止所做的代码
  • 欢迎堆栈溢出。请注意,由于这不是一项家庭作业服务,您需要展示您尝试过的内容(这是缺少的部分),并且应该提供一个具体的示例(您做到了)。请阅读how to ask a good questionmcve 并相应地编辑您的问题。

标签: python date pandas dataframe


【解决方案1】:

您需要合并或加入。如果您合并,则需要重置索引,这比使用连接的内存效率低且速度慢。请阅读Joining a single index to a multi index 上的文档:

0.14.0 版中的新功能。

你可以加入一个单索引的DataFrame,其级别为a 多索引数据帧。级别将匹配索引的名称 单索引框架的级别名称与多索引的级别名称 框架

如果要使用join,则必须将df1的索引命名为Date,使其与df2的第一级名称匹配:

df1.index.names = ['Date']
df1[['trading_signal']].join(df2, how='right')


                     trading_signal   0   1   2   3   4
Date       Time                                        
2015-01-01 22:55:00               1   0   1   2   3   4
           23:55:00               1   5   6   7   8   9
2015-01-02 00:55:00              -1  10  11  12  13  14
           01:55:00              -1  15  16  17  18  19
           02:55:00              -1  20  21  22  23  24

我加入是有原因的,如果你不明白这意味着什么,请阅读Brief primer on merge methods (relational algebra)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    • 2023-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多