簡體   English   中英

Python pandas:如果A列值出現多次,則分配B列的第一個值

[英]Python pandas: if column A value appears more than once, assign first value of column B

我正在嘗試用一致的值動態替換列 B的值i ,條件是列 Aj的值計數。

我正在嘗試使用字典來 map 的值,但它不起作用。

color = ['black','mauve','teal','green','teal','black']
code = ['E45', 'M46', 'Y76', 'G44', 'T76','B43']

df = pd.DataFrame({'color': color, 'code': code})

# Dedupe a copy
df_copy = df
df_copy = df_copy.drop_duplicates(subset='color', keep='first')

# Create a dictionary
dummy_dict = df_copy[['color','code']].to_dict('list')
# {'color': ['black', 'mauve', 'teal', 'green', 'teal', 'black'], 'code': ['E45', 'M46', 'Y76', 'G44', 'T76', 'B43']}

### Not working
df["new_code"] = df.code.replace(dummy_dict)

### Output (wrong):
# color   code   new_code
# black    E45   E45
# mauve    M46   M46
# teal     Y76   Y76
# green    G44   G44
# teal     T76   T76
# black    B43   B43


### Desired output:
# color   code   new_code
# black    E45   E45
# mauve    M46   M46
# teal     Y76   Y76
# green    G44   G44
# teal     T76   Y76
# black    B43   E45

我哪里錯了? 就好像 Python 甚至沒有訪問我的字典到 map 的值。

它是transformfirst

df['new_code'] = df.groupby('color').code.transform('first')

Out[21]:
   color code new_code
0  black  E45      E45
1  mauve  M46      M46
2   teal  Y76      Y76
3  green  G44      G44
4   teal  T76      Y76
5  black  B43      E45

暫無
暫無

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

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