簡體   English   中英

如何根據其他列中的數據替換python大熊貓中的某些值?

[英]How do you replace certain values from row to row in python pandas based on data in other columns?

現在,我正在使用python pandas,但找不到此問題的解決方案:我有一個數據框df,我想基於同一數據集另一列中的標簽將某些數據從一行復制到另一行(替換) 。 我認為,舉個例子是最好的方式:

 Kind  Type       V1      V2    V3 

 AAA      AAA     7       8     4 

 BBB      AAA    4       8     1 

 CCC      AAA    3       1     7 

 AAA      BBB    2       5     3

 BBB      BBB    11      9     8 

 CCC      BBB    7       7     10

 AAA      CCC    5       8     2 

 BBB      CCC    2       3     7 

 CCC      CCC    4       10    6

我想要的是為每個類型用類型BBB替換類型AAA,但僅用於行Value3(V3)。 這樣的結果將是:

 Kind     Type   V1     V2    V3 

 AAA      AAA    7       8     1 

 BBB      AAA    4       8     1 

 CCC      AAA    3       1     7 

 AAA      BBB    2       5     8

 BBB      BBB    11      9     8 

 CCC      BBB    7       7     10

 AAA      CCC    5       8     7 

 BBB      CCC    2       3     7 

 CCC      CCC    4       10    6

如您所見,這3個數字現已替換為BBB類型的值。

df.loc[df['Kind']=='AAA','V3'] = x  # x is numeric

我只能將每個V3號替換為帶有數字x的AAA類,但這不是我想要的。 由於數字都是不同的。 有人可以幫我嗎? 謝謝!

通過boolean indexing過濾DataFrame並創建Series以僅map KindAAA行:

s = df.loc[df['Kind'] == 'BBB', ['Type', 'V3']].set_index('Type')['V3']
print (s)
Type
AAA    1
BBB    8
CCC    7
Name: V3, dtype: int64

df.loc[df['Kind']=='AAA','V3'] = df['Type'].map(s)
print (df)
  Kind Type  V1  V2  V3
0  AAA  AAA   7   8   1
1  BBB  AAA   4   8   1
2  CCC  AAA   3   1   7
3  AAA  BBB   2   5   8
4  BBB  BBB  11   9   8
5  CCC  BBB   7   7  10
6  AAA  CCC   5   8   7
7  BBB  CCC   2   3   7
8  CCC  CCC   4  10   6

這是使用shift的示例

df.loc[df['Kind'] == 'AAA', 'V3'] = df['V3'].shift(-1).fillna(0).astype(int)

    Kind    Type    V1  V2  V3
0    AAA     AAA    7   8   1
1    BBB     AAA    4   8   1
2    CCC     AAA    3   1   7
3    AAA     BBB    2   5   8
4    BBB     BBB    11  9   8
5    CCC     BBB    7   7   10
6    AAA     CCC    5   8   7
7    BBB     CCC    2   3   7
8    CCC     CCC    4   10  6

請注意,這取決於您的數據框按種類和類型排序,並且不匹配項的默認值為0。

暫無
暫無

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

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