gpt4 book ai didi

python - 如何根据评估每一行以查看数据是否存在来将数据插入 pandas 数据框

转载 作者:太空宇宙 更新时间:2023-11-03 15:42:31 26 4
gpt4 key购买 nike

d = {
'item_number':['123243','123243','7987987','7987987','7987987','4323242','223340'],
'prod_name':['apple','apple','bacon','bacon','bacon','milk','eggs'],
'seller': ['safeway','publix','albertsons','safeway','publix','safeway','albertsons'],
'price':['0.69','0.50','2.99','3.99','3.67','3.99','3.99']}

df = pd.DataFrame(data=d)

我有一个类似于上面的数据框。我想要做的是,对于每个 item_number,三个卖家(safeway、publix 和 albertsons)都需要出现。如果它们没有出现在当前数据集中,则需要插入它们,并重复项目编号和产品名称,并在价格处留有空白。

结果看起来像这样:

d = {
'item_number':['123243','123243','123243','7987987','7987987','7987987','4323242','4323242','4323242','223340','223340','223340'],
'prod_name':['apple','apple','apple','bacon','bacon','bacon','milk','milk','milk','eggs','eggs','eggs'],
'seller':['safeway','publix','albertsons','albertsons','safeway','publix','safeway','albertsons','publix','safeway','albertsons','publix'],
'price':['0.69','0.50','','2.99','3.99','3.67','3.99','','','3.99','','']}

df = pd.DataFrame(data=d)

我需要一种方法来以某种方式评估每个卖家是否存在于每个商品编号中,或者强制它们以某种左连接的方式存在于数据集,该数据集是通过以某种方式将每个卖家添加到每个商品编号而构建的。

我尝试过类似的方法:

for i in df.index:
for comp in compDict:
competitor = df.loc[i,'seller'].lower()
if competitor.find(comp) > -1:
do something
else:
df.loc[i+1,'seller'] = comp

最佳答案

您可以使用itertools.product在识别出 prod_nameseller 列中存在的唯一元素后,生成它们的笛卡尔积。

设置相同的列作为索引轴,并根据生成的元组列表重新索引。最初不存在于我们的原始 DF 中的值将用 NaN 填充。 item_number 中的缺失值可以通过基于 prod_name 的分组来填充,并仅考虑其不重复的出现,而空值price 中将由空字符串填充。

import itertools

idx = list(itertools.product(df['prod_name'].unique(), df['seller'].unique()))
cols = df.columns
df = df.set_index(['prod_name', 'seller']).reindex(idx)
df['item_number'] = df.groupby(level='prod_name').transform('first')
df['price'] = df['price'].fillna("")
df.reset_index().reindex_axis(cols, axis=1)

enter image description here

关于python - 如何根据评估每一行以查看数据是否存在来将数据插入 pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42009512/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com