我有两个具有多列数据集的数据库-1(Df1)有超过几千行,dataset-2(df2)较小.300排。
我需要从df2的第3列中提取一个df2,其基础是df1中的'fruit'与df2中的'type'和df1中的'expiry'与'expiry'在df2中的匹配。
此外,与其直接将'Value'存储在df1中的新列中,我还需要对每行中的值执行乘法,输出将存储在df1中的新a列中。
例如,如果到期时间为2时,则该值乘以2,如果其3值乘以3.以此类推!
我能够通过使用下面的代码来解决这个问题,但是……
for i in range(0, len(df1)):
df1_value = df2.loc[(df2['type'] == df1.iloc[i]['fruit']) & (df2['expiry'] == str(df1.iloc[i]['expiry'])].iloc[0]['value']
df1.loc[i, 'df_value'] = df1.iloc[i]['expiry']*df1_value它产生了两个问题
如果迭代抛出一个空值(例如,香蕉在-IndexError: single positional indexer is out-of-bounds
有更好的方法来处理这件事吗?
假设df1:
fruit expiry category
apple 3 a
apple 3 b
apple 4 c
apple 4 d
orange 2 a
orange 2 b
orange 3 c
orange 3 d
orange 3 e
banana 3 a
banana 3 b
banana 3 c
banana 4 d
pineapple 2 a
pineapple 3 b
pineapple 3 c
pineapple 4 d
pineapple 4 edf2:
type expiry value
apple 2 100
apple 3 110
apple 4 120
orange 2 200
orange 3 210
orange 4 220
banana 2 310
banana 4 320
pineapple 2 410
pineapple 3 420
pineapple 4 430输出:-revised df1
fruit expiry category df_value
apple 3 a 110*3=330
apple 3 b 110*3=330
apple 4 c 120*4=480
apple 4 d 120*4=480
orange 2 a 200...
orange 2 b 200...
orange 3 c 210...
orange 3 d 210...
orange 3 e 210...
banana 3 a 0
banana 3 b 0
banana 3 c 0
banana 4 d 320*4=1280
pineapple 2 a 410*2=820
pineapple 3 b 420...
pineapple 3 c 420...
pineapple 4 d 430....
pineapple 4 e 430....发布于 2022-09-15 09:11:23
据我所知,只有在python中使用SQL才能做到这一点。SQL用于关联至少有一个可关联列的不同数据库(如果您使用过Power或Tableau,您知道我的意思),并通过它们之间的相互关系查询多个数据。我不懂这门语言,所以我帮不了你更多。
https://stackoverflow.com/questions/63454853
复制相似问题