在Python中如何在没有公共键的情况下组合两个数据帧

2024-10-02 22:36:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧AB

A= Date 2016-01 2016-02 2016-03 2016-04 2016-05

B= Titles Manager Direcotr Associates

我想要一个20x2大小的数据帧,如下所示:

AB= Date Title 2016-01 Manager 2016-02 Manager 2016-03 Manager ... 2016-04 Associates 2016-05 Associates

这就是我所尝试的:

columns = ['Date','Title']
b = pd.DataFrame(columns=columns)

for i in A.Date:
    for j in B.Title:
        b.Date = i
        b.Title = j

但这行不通。任何暗示都会很有帮助。在


Tags: columns数据indataframefordateabtitle
2条回答

基兰的回答稍微简单一点:

from itertools import product
import pandas as pd

df1 = pd.DataFrame({'Dates': ['Date0', 'Date1', 'Date2', 'Date3']})

df2 = pd.DataFrame({'Titles': ['Manager', 'Director', 'Associates']})

我们只需要传递给product的一维值列表,而.values将得到一个二维数组

^{pr2}$

我们可以直接从这里构造DataFrame

pd.DataFrame(list(prod),columns=['Date','Title'])

与逐行构建相反,通常首选(而且速度更快)从列表构建整个DataFrame。在

当然,也没有理由A和{}需要是数据帧。如果它们是列表或Series对象,那么代码将更加简单。在

我第一次尝试熊猫,但也许这就是你想要的答案:

from itertools import product
import pandas as pd

df1 = pd.DataFrame({'Dates': ['Date0', 'Date1', 'Date2', 'Date3']},
                   index=[0, 1, 2, 3])

df2 = pd.DataFrame({'Titles': ['Manager', 'Director', 'Associates']},
                   index=[0, 1, 2])

columns = columns = ['Date','Title']
result = pd.DataFrame(columns=columns)

prod = product(df1.values, df2.values)
for index, i in enumerate(prod):
    result.loc[index] = [i[0][0], i[1][0]]

这给了我输出

^{pr2}$

相关问题 更多 >