簡體   English   中英

如何通過搜索現有列值而不迭代在數據框中追加新行?

[英]How to append a new row in a dataframe by searching for an existing column value without iterating?

當某個值包含在列中時,我試圖找到為每 1 行創建新行的最佳方法。

示例數據框

指數 Drink_Order
1 山姆 傑克和可樂
2 約翰 可樂
3 史蒂夫 胡椒博士

我想在 DataFrame 中搜索 Jack 和 Coke,將其刪除並添加 2 個新記錄,因為 Jack 和 Coke 是 2 個不同的飲料來源。

指數 Drink_Order
2 約翰 可樂
3 史蒂夫 胡椒博士
4 山姆 傑克丹尼
5 山姆 可樂

我想替換的示例代碼,因為我的理解是你永遠不應該修改你正在迭代的行

for index, row in df.loc[df['Drink_Order'].str.contains('Jack and Coke')].iterrows():
    df.loc[len(df)]=[row['Person'],'Jack Daniels']
    df.loc[len(df)]=[row['Person'],'Coke']

df = df[df['Drink_Order']!= 'Jack and Coke']

使用和拆分。 這將導致一個列表。 分解列表以獲取列表中的每個元素顯示為單獨的行。 然后有條件地將 Jack 重命名為 Jack Daniels

 df= df.assign(Drink_Order=df['Drink_Order'].str.split('and')).explode('Drink_Order')
df['Drink_Order']=np.where(df['Drink_Order'].str.contains('Jack'),'Jack Daniels',df['Drink_Order'])

    Index Person   Drink_Order
0      1    Sam  Jack Daniels
0      1    Sam          Coke
1      2   John          Coke
2      3  Steve    Dr. Pepper

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM