pandas - 如何在第二行替换相同的值?
问题描述
这可以在 DataFrame Pandas 中做到吗?我只想在同一列上保留第一行值,替换第二行,然后用 0
输入
Name--------Date-------Amount-----Labor
A--------------1/1/1972-------5-------- 0.3
A--------------1/1/1972-------5-------- 0.1
A--------------1/1/1972-------5-------- 0.7
A--------------1/1/1972-------1-------- 0.3
B--------------7/2/1980-------1-------- 0.6
B--------------7/2/1980-------1-------- 0.3
B--------------7/2/1980-------1-------- 0.7
C--------------6/9/1965-------4-------- 0.2
C--------------6/9/1965-------4-------- 0.3
C--------------6/9/1965-------4-------- 0.4
输出
Name--------Date-------Amount-----Labor
A--------------1/1/1972-------5-------- 0.3
A--------------1/1/1972-------0-------- 0.1
A--------------1/1/1972-------0-------- 0.7
A--------------1/1/1972-------0-------- 0.3
B--------------7/2/1980-------1-------- 0.6
B--------------7/2/1980-------0-------- 0.3
B--------------7/2/1980-------0-------- 0.7
C--------------6/9/1965-------4-------- 0.2
C--------------6/9/1965-------0-------- 0.3
C--------------6/9/1965-------0-------- 0.4
解决方案
尝试:duplicated
_np.where
df.Amount = np.where(df.Amount.duplicated(),0, df.Amount)
或与mask
:
df.Amount = df.Amount.mask(pd.Series.duplicated, 0)
通过where
:
m = df.Amount.duplicated()
df.Amount = df.Amount.where(~m,0)
输出:
Name Date Amount Labor
0 A 1/1/1972 5 0.3
1 A 1/1/1972 0 0.1
2 A 1/1/1972 0 0.7
3 A 1/1/1972 1 0.3
4 B 7/2/1980 0 0.6
5 B 7/2/1980 0 0.3
6 B 7/2/1980 0 0.7
7 C 6/9/1965 4 0.2
8 C 6/9/1965 0 0.3
9 C 6/9/1965 0 0.4
推荐阅读
- android - 如何在 Android/Ionic 2 框架中防止屏幕捕获
- ionic-framework - Ionic4 http请求在Android设备上不起作用
- php - PHP:从多个数组中获取唯一的数组键或列
- php - 访问 HTML 模板 PHP 上的会话变量
- ruby-on-rails - Net::SMTPSyntaxError · 501 无效命令或无法从地址解析
- javascript - javascript中的异步等待sqlite
- python - 使用来自另一个笔记本的动态名称/字符串运行 jupyter notebook
- c++ - 我怎样才能声明'''向量
''' 用于使用 C++/CLR 环境的 OpenCV 中的轮廓? - jenkins - “java.lang.IllegalArgumentException:预期关闭或失败”运行并行构建时出现异常
- android - AutoCompleteTextView onItemClickListener 未触发