簡體   English   中英

在數據框中,將基於過濾條件的選定單元格復制到同一數據框中的另一行

[英]Within a dataframe, copy selected cells based on filter critera to another row within the same dataframe

我想根據另一個單元格的過濾器將單元格的值復制到特定行

import pandas as pd

sales = {'Flight Number': ['LX2104', 'LX2104', 'LX2104', 'LX2105', 'LX2105', 'LX2105', 'LX2106', 'LX2106', 'LX2106'],
     'STD Departure': [0, 1, 2, 0, 1, 2, 0, 1, 2],
     'Bircher': [200, 210, 90, 40, 20, 10, 10, 30, 20],
     'Carac': [140, 215, 95,40, 50, 30, 40, 30, 50]}
df = pd.DataFrame.from_dict(sales)

我想將單元格“ Bircher”和“ Carac”從“航班號” LX2104的行復制到“航班號” LX2105”的行。“ STD出發”中的值應保持不變

您可以這樣做,從視覺上可以更清晰:

df.loc[df['Flight Number'] == 'LX2104', 'Bircher'] = df[df['Flight Number'] == 'LX2105'].Bircher.values
df.loc[df['Flight Number'] == 'LX2104', 'Carac'] = df[df['Flight Number'] == 'LX2105'].Carac.values

輸出:

  Flight Number  STD Departure  Bircher  Carac
0        LX2104              0     40.0     40
1        LX2104              1     20.0     50
2        LX2104              2     10.0     30
3        LX2105              0     40.0     40
4        LX2105              1     20.0     50
5        LX2105              2     10.0     30
6        LX2106              0     10.0     40
7        LX2106              1     30.0     30
8        LX2106              2     20.0     50

也可以使用,但是我認為還不清楚:

df.loc[df['Flight Number'] == 'LX2104', ['Bircher', 'Carac']] = df[df['Flight Number'] == 'LX2105'][['Bircher', 'Carac']].values

我將嘗試解釋此代碼。 我使用df.loc[raw_index, column_index]來獲取切片(正確的Raws和columns)。 df['Flight Number'] == 'LX2104'將返回一個帶有True值的布爾數組,其中航班號為LX2104,因此我們需要一個原始值,然后我只需傳遞列名即可擁有一個需要的列。 在右側,我執行相同操作,但使用另一個航班號。 請注意,如果它們的長度(原始數量)不同,則將無法使用。

暫無
暫無

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

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