【问题标题】:Merge two Pandas Dataframes合并两个 Pandas 数据框
【发布时间】:2018-03-14 04:04:32
【问题描述】:

我有以下合并问题:

我有一个行业相关数据的时间序列:多年来 60 个不同行业的每周利润率,如下所示:

industry = pd.DataFrame({'Ind0': ['01', '02', '03', '04'],                   
'Ind1': ['11', '12', '13', '14'],
'Ind2': ['21', '22', '23', '24'],
'Ind3': ['31', '32', '33', '34']})

我的第二个数据框包含几 1,000 只股票及其各自的行业(每只股票恰好属于一个行业)

stocks = pd.DataFrame({'Stock0': ['Ind0'], 
'Stock1': ['Ind1'],
'Stock2': ['Ind2'],
'Stock3': ['Ind3'],
'Stock4': ['Ind0'],
'Stock5': ['Ind1']})

我想创建一个新的数据框,其中包含来自股票所属正确行业的每只股票的行业时间序列,例如:

result = pd.DataFrame({'Stock0': ['01', '02', '03', '04'],                   
'Stock1': ['11', '12', '13', '14'],
'Stock2': ['21', '22', '23', '24'],
'Stock3': ['31', '32', '33', '34'],
'Stock4': ['01', '02', '03', '04'],
'Stock5': ['11', '12', '13', '14']})

我尝试了多种合并/连接方法,但均未成功。任何帮助表示赞赏。

【问题讨论】:

    标签: python pandas dataframe merge


    【解决方案1】:

    这是你想要的吗?

    stocks.T.merge(industry.T,left_on=0,right_index=True).drop(['key_0','0_x'],axis=1).rename(columns={'0_y':0}).T
    Out[189]: 
      Stock0 Stock4 Stock1 Stock5 Stock2 Stock3
    0     01     01     11     11     21     31
    1     02     02     12     12     22     32
    2     03     03     13     13     23     33
    3     04     04     14     14     24     34
    

    【讨论】:

    • @NiccolaTartaglia 只是想想你需要什么,你已经知道的方法是什么,然后把数据转换成你熟悉的:) BTW,快乐编码:)
    • 谢谢文,非常优雅的解决方案。我将继续练习,并希望能够很快自己解决这类问题。谢谢!!!
    • @NiccolaTartaglia 希望尽快看到您的解决方案
    猜你喜欢
    • 2015-10-17
    • 1970-01-01
    • 1970-01-01
    • 2015-04-17
    • 1970-01-01
    • 2020-02-19
    • 2023-03-09
    • 2017-01-20
    • 1970-01-01
    相关资源
    最近更新 更多