Python 如何在pandas.DataFrame中插入满足条件的行值

Python 如何在pandas.DataFrame中插入满足条件的行值,python,pandas,itertools,Python,Pandas,Itertools,我开始学习Python,遇到了以下问题:我试图连接下面的两个数据帧,这样就有多个行包含相同的名称和参数,但适用于整个温度范围 import pandas as pd frame1 = pd.DataFrame({'names':['bb1', 'bb2', 'bb3', 'bb4', 'bb5'], 'parameter1':['1', '2', '3', '4', '5'], 'parameter2':['

我开始学习Python,遇到了以下问题:我试图连接下面的两个数据帧,这样就有多个行包含相同的名称和参数,但适用于整个温度范围

    import pandas as pd
    frame1 = pd.DataFrame({'names':['bb1', 'bb2', 'bb3', 'bb4', 'bb5'],
                  'parameter1':['1', '2', '3', '4', '5'],
                  'parameter2':['0.1', '0.2', '0.3', '0.4', '0.5']})
    frame2 = pd.DataFrame({'names':['bb1', 'bb2', 'bb3', 'bb4', 'bb5'],
                  'temperature':['300', '400', '500', '600', '700']})
输出应该如下所示

        names  parameter1    parameter2    temperature
    0   bb1    1             0.1           300
    1   bb1    1             0.1           400
    ...
    5   bb2    2             0.2           300
    6   bb2    2             0.2           400
    ...
感觉熊猫或itertools中应该有内置的工具,但我就是想不出来

我尝试使用itertools.product:

    pd.DataFrame(list(itertools.product(parameters,temperature)))
但是我想不出一种方法来插入带有参数1和参数2的列,以匹配names列中的条目。谢谢你的帮助


(编辑)固定示例帧1

您可以使用
pd.merge
对“名称”进行内部联接

>>> pd.merge(frame1, frame2, how='inner', on = 'names')


  names parameter1 parameter2 temperature
0   bb1          1        0.1         300
1   bb1          1        0.1         121
2   bb2          2        0.2         400
3   bb3          3        0.3         500
4   bb4          4        0.4         600
5   bb5          5        0.5         700

您应该首先创建一个数据框,将每个名称链接到多个温度,然后使用
merge
函数将其合并到
frame1

import pandas as pd
from itertools import product
frame1 = pd.DataFrame({'names':['bb1', 'bb2', 'bb3', 'bb4', 'bb5'],
                  'parameter1':['1', '2', '3', '4', '5'],
                  'parameter2':['0.1', '0.2', '0.3', '0.4', '0.5']})
names = ['bb1', 'bb2', 'bb3', 'bb4', 'bb5']
temperatures = ['300', '400', '500', '600', '700']
frame2 = pd.DataFrame.from_records(list(product(names, temperatures)),
                                   columns=['names', 'temperatures'])
df = frame1.merge(frame2)

这似乎只是在frame1中添加了温度列。从所问的问题中,我可以看出您希望将温度与frame1合并。如果你有别的意思,请告诉我。