gpt4 book ai didi

python - 如何将值附加到 pandas 数据框中的单元格

转载 作者:行者123 更新时间:2023-12-01 08:15:08 25 4
gpt4 key购买 nike

我有一个数据框,我正在其中创建一个新列并填充其值。根据条件,如果再次遇到该行,新列需要附加一些值。

例如,对于给定的数据帧:

df

id   Stores                  is_open
1 'Walmart', 'Target' true
2 'Best Buy' false
3 'Target' true
4 'Home Depot' true

现在,如果我想添加一个新列作为Ticker,它可以是给定的以逗号分隔的股票或列表字符串(以更可取和更容易的为准。我这边没有偏好)逗号分隔的商店。

例如,沃尔玛的股票代码是 wmt,目标是 tgt。我从另一个基于匹配键的数据帧获取的 wmttgt 数据,因此我尝试按如下方式添加,但并非所有数据都被分配,即使它们具有值并且仅一个值后跟一个逗号被分配给 Tickers 列,而不是多个:

df['Tickers'] = '' 
for _, row in df.iterrows():
stores = row['Stores']
list_stores = stores(',')
if len(list_stores) > 1:
for store in list_stores:
tmp_df = second_df[second_df['store_id'] == store]

ticker = tmp_df['Ticker'].values[0] if len(tmp_df['Ticker'].values) > 0 else None

if ticker:
df.loc[
df['Stores'].astype(str).str.contains(store), 'Ticker'] += '{},'.format(ticker)

预期输出:

id   Stores                  is_open      Ticker
1 'Walmart', 'Target' true wmt, tgt
2 'Best Buy' false bby
3 'Target' true tgt
4 'Home Depot' true nan

如果有人能在这里帮助我,我将非常感激。

最佳答案

您可以将 apply 方法与 axis=1 结合使用来传递行并执行计算。请参阅下面的代码:

import pandas as pd
mydict = {'id':[1,2],'Store':["'Walmart','Target'","'Best Buy'"], 'is_open':['true', 'false']}
df = pd.DataFrame(mydict, index=[0,1])
df.set_index('id',drop=True, inplace=True)

到目前为止的df:

                 Store is_open
id
1 'Walmart','Target' true
2 'Best Buy' false

查找数据框:

df2 = pd.DataFrame({'Store':['Walmart', 'Target','Best Buy'], 'Ticker':['wmt','tgt','bby']})
      Store Ticker
0 Walmart wmt
1 Target tgt
2 Best Buy bby

这是添加列的代码:

def add_column(row):

items = row['Store'].split(',')

tkr_list = []

for string in items:
mystr = string.replace("'","")

tkr = df2.loc[df2['Store']==mystr,'Ticker'].values[0]

tkr_list.append(tkr)

return tkr_list


df['Ticker']=df.apply(add_column, axis=1)

这是 df 的结果:

                 Store is_open      Ticker
id
1 'Walmart','Target' true [wmt, tgt]
2 'Best Buy' false [bby]

关于python - 如何将值附加到 pandas 数据框中的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55035636/

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