[英]python pandas drop value from column 'B' if that value appears in column 'A'
[英]Python pandas: if column A value appears more than once, assign first value of column B
我正在嘗試用一致的值動態替換列 B的值i ,條件是列 A中j的值計數。
我正在嘗試使用字典來 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 的值。
它是transform
和first
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.