Python 如何在pandas.DataFrame中插入满足条件的行值
我开始学习Python,遇到了以下问题:我试图连接下面的两个数据帧,这样就有多个行包含相同的名称和参数,但适用于整个温度范围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':['
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合并。如果你有别的意思,请告诉我。