搜索唯一单元格和乘法行(Python Pandas)



我有一个很大的数据帧,我想将另一行与另一个表中的唯一值相乘。对于列,我想在我的大数据帧中搜索第二个数据框(仅是那些行(以匹配项,然后将big_frame.size乘以second_frame.price

big_frame=
name year size *value*
v1  2015    5   50
v1  2015    5   50
v1  2015    5   50
v1  2015    5   50
v1  2016    5   75
v1  2016    5   75
v1  2016    5   75
v1  2016    5   75
v1  2016    5   75
v2  2015    4   36
v2  2015    4   36
v2  2015    4   36
v2  2016    4   100
v2  2016    4   100
v2  2016    4   100

second_frame = 
name year size price
v1   2015   5   10
v1   2016   5   15
v2   2015   4   9
v2   2016   4   25

我尝试使用 .loc 来获取值,但它抱怨帧的长度不同。我想要类似 excels 锁定功能"$A$1"的东西,因为我宁愿不为每个值制作一个大框架来匹配len(big_frame),因为big_frame很大。

添加一列价格为 big_frame 然后乘法也是一个可以接受的解决方案(尽管 imo,这会减慢这个过程,对吧?有什么建议吗?

您可以使用

merge创建一个合并的 df,它将合并所有列并执行内部合并,以便只保留完全匹配项,然后只需将 2 列相乘:

In [6]:
merged = df1.merge(df2)
merged
Out[6]:
   name  year  size  price
0    v1  2015     5     10
1    v1  2015     5     10
2    v1  2015     5     10
3    v1  2015     5     10
4    v1  2016     5     15
5    v1  2016     5     15
6    v1  2016     5     15
7    v1  2016     5     15
8    v1  2016     5     15
9    v2  2015     4      9
10   v2  2015     4      9
11   v2  2015     4      9
12   v2  2016     4     25
13   v2  2016     4     25
14   v2  2016     4     25
In [7]:
merged['value'] = merged['size'] * merged['price']
merged
Out[7]:
   name  year  size  price  value
0    v1  2015     5     10     50
1    v1  2015     5     10     50
2    v1  2015     5     10     50
3    v1  2015     5     10     50
4    v1  2016     5     15     75
5    v1  2016     5     15     75
6    v1  2016     5     15     75
7    v1  2016     5     15     75
8    v1  2016     5     15     75
9    v2  2015     4      9     36
10   v2  2015     4      9     36
11   v2  2015     4      9     36
12   v2  2016     4     25    100
13   v2  2016     4     25    100
14   v2  2016     4     25    100

最新更新