如果熊猫数据帧已经有两列,如何将熊猫数据帧添加到另一个熊猫数据帧?

时间:2021-02-24 03:13:40

标签: python pandas dataframe

我使用 PyTrends 从 Google 趋势中抓取数据,能够创建一个功能,然后创建 4 个单独的熊猫数据框,每个数据框都有一个“日期”列和一个“失业(丹麦)”列。本质上,我希望能够创建一个包含两列(又名 x1)的熊猫数据框,然后创建一个空列作为锯齿/组织列的一种方式,然后我需要应用/加入接下来的两列(x2 )。等等。

一直在寻找所有文档和 stackoverflow 的答案,但找不到。

这是我正在使用的代码:

import pandas as pd
import pytrends
from pytrends.request import TrendReq
pytrend = TrendReq()


def my_funct(Keyword, Dates, Country, Col_name):
    KEYWORDS=[Keyword] 
    KEYWORDS_CODES=[pytrend.suggestions(keyword=i)[0] for i in KEYWORDS] 
    df_CODES= pd.DataFrame(KEYWORDS_CODES)


    EXACT_KEYWORDS=df_CODES['mid'].to_list()
    DATE_INTERVAL= Dates
    COUNTRY=[Country] #Use this link for iso country code
    CATEGORY=0 # Use this link to select categories
    SEARCH_TYPE='' #default is 'web searches',others include 'images','news','youtube','froogle' (google shopping)


    Individual_EXACT_KEYWORD = list(zip(*[iter(EXACT_KEYWORDS)]*1))
    Individual_EXACT_KEYWORD = [list(x) for x in Individual_EXACT_KEYWORD]
    dicti = {}
    i = 1

    for Country in COUNTRY:
        for keyword in Individual_EXACT_KEYWORD:
            pytrend.build_payload(kw_list=keyword, 
                                  timeframe = DATE_INTERVAL, 
                                  geo = Country, 
                                  cat=CATEGORY,
                                  gprop=SEARCH_TYPE) 
            dicti[i] = pytrend.interest_over_time()
            i+=1
        

    df_trends = pd.concat(dicti, axis=1)


    df_trends.columns = df_trends.columns.droplevel(0) #drop outside header
    df_trends = df_trends.drop('isPartial', axis = 1) #drop "isPartial"
    df_trends.reset_index(level=0,inplace=True) #reset_index
    df_trends.columns=['date', Col_name] #change column names
    
    return df_trends


Today = pd.Timestamp.today().strftime('%Y-%m-%d')

x1 = my_funct('Arbejdsløshed', '2004-01-04 2009-01-04', 'DK', 'Unemployment (Denmark)')

x2 = my_funct('Arbejdsløshed', '2009-01-05 2014-01-05', 'DK', 'Unemployment (Denmark)')

x3 = my_funct('Arbejdsløshed', '2014-01-06 2019-01-06', 'DK', 'Unemployment (Denmark)')
              
x4 = my_funct('Arbejdsløshed', '2019-01-07 {0}'.format(Today), 'DK', 'Unemployment (Denmark)')   

尝试:

df = pd.DataFrame(x1)
df2 = pd.DataFrame(x2)
df.join(df2)

它应该是什么样子的示例:

date       | Unemployment  (skip one column line)    date        | Unemployment
-------------------------                            --------------------------
2004/01/04 | 52                                      2009/01/05  |  20
...        |                                         ...         |
2009/01/04 | 81                                      2014/01/05  |  35

请帮忙。 谢谢

1 个答案:

答案 0 :(得分:0)

import pandas as pd

data = {'Date': ['2004-01-04','2009-01-04'], 'Unemployement': [52,81]}
df=pd.DataFrame.from_dict(data)

data = {'Date': ['2009-01-05','2014-01-05'], 'Unemployement': [20,35]}
df2=pd.DataFrame.from_dict(data)

df['Blank_column_instered']=''

df=pd.concat([df, df2], axis=1)

根据我们想要水平连接两个数据帧的问题。 这个技巧可以做同样的事情。

根据所需的输出添加了一个空白列。

希望这能解决问题。