![](/img/trans.png)
[英]How to store a calculated value in new column by iterating through each row in a dataframe in Python?
[英]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.