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

2024-04-20 13:46:35 发布

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

我有一个大的数据帧,我想用另一个表的唯一值乘以一行。 对于列,我想在第二个数据帧(只有那些行)中搜索匹配的大数据帧,然后将big_frame.sizesecond_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),因为大的框架是一个大的框架。你知道吗

在大框架中添加一个价格列,然后进行乘法也是一个可以接受的解决方案(尽管我认为这会减慢过程,对吧?) 有什么建议吗?你知道吗


Tags: 数据函数name框架sizevalueyearframe
1条回答
网友
1楼 · 发布于 2024-04-20 13:46:35

您可以使用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

相关问题 更多 >