亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何合并這兩個數據集?

如何合并這兩個數據集?

繁花如伊 2022-06-22 22:09:42
我有兩個數據集。我想使用索引進行合并。第一個數據集:index       A   B   C01/01/2010  15  20  3015/01/2010  12  15  2517/02/2010  14  13  3519/02/2010  11  10  222nt 數據集:index  year  month     price0      2010  january   701      2010  february  80我希望他們像這樣加入:index       A   B   C   price01/01/2010  15  20  30  7015/01/2010  12  15  25  7017/02/2010  14  13  35  8019/02/2010  11  10  22  80問題是如何使用兩列(year以及month第二個數據集)來創建臨時 datetime index。
查看完整描述

2 回答

?
阿晨1998

TA貢獻2037條經驗 獲得超6個贊

試試這個,通過從中提取.month_name()和 year( .dt.year)df1并將其與df2


>>> df1      

        index   A   B   C

0  01/01/2010  15  20  30

1  15/01/2010  12  15  25

2  17/02/2010  14  13  35

3  19/02/2010  11  10  22

>>> df2              

   index  year     month  price

0      0  2010   january     70

1      1  2010  february     80


# merging df1 and df2 by month and year.

>>> df1.merge(df2,

              left_on = [pd.to_datetime(df1['index']).dt.year,

                 pd.to_datetime(df1['index']).dt.month_name().str.lower()],

              right_on = ['year', 'month'])

輸出:


      index_x   A   B   C  index_y  year     month  price

0  01/01/2010  15  20  30        0  2010   january     70

1  15/01/2010  12  15  25        0  2010   january     70

2  17/02/2010  14  13  35        1  2010  february     80

3  19/02/2010  11  10  22        1  2010  february     80


查看完整回答
反對 回復 2022-06-22
?
九州編程

TA貢獻1785條經驗 獲得超4個贊

這是愚蠢的答案!我相信你可以做得比這更聰明:) 但考慮到你的表是一個字典列表(你可以輕松地將你的 SQL 表轉換為這種格式),這很有效。我知道這不是一個干凈的解決方案,但是您要求一個簡單的解決方案,這可能是最容易理解的:)


months = {'january': "01",

          'february': "02",

          'march': "03",

          'april':"04",

          'may': "05",

          'june': "06",

          'july': "07",

          'august': "08",

          'september': "09",

          'october': "10",

          'november': "11",

          'december': "12"}


table1 = [{'index': '01/01/2010', 'A': 15, 'B': 20, 'C': 30},

          {'index': '15/01/2010', 'A': 12, 'B': 15, 'C': 25},

          {'index': '17/02/2010', 'A': 14, 'B': 13, 'C': 35},

          {'index': '19/02/2010', 'A': 11, 'B': 10, 'C': 22}]


table2 = [{'index': 0, 'year': 2010, 'month': 'january', 'price':70},

          {'index': 1, 'year': 2010, 'month': 'february', 'price':80}]


def joiner(table1, table2):

    for row in table2:

        row['tempDate'] = "{0}/{1}".format(months[row['month']], str(row['year']))

    for row in table1:

        row['tempDate'] = row['index'][3:]


    table3 = []

    for row1 in table1:

        row3 = row1.copy()

        for row2 in table2:

            if row2['tempDate'] == row1['tempDate']:

                row3['price'] = row2['price']

                break

        table3.append(row3)

    return(table3)


table3 = joiner(table1, table2)

print(table3)


查看完整回答
反對 回復 2022-06-22
  • 2 回答
  • 0 關注
  • 150 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號