【发布时间】:2020-04-19 14:28:30
【问题描述】:
我希望有人可以帮助我。
我有一个 df,我想在“长度”列上使用替换,但我只想在符合条件的某些行上使用替换(我已经能够做到)。问题是那些不符合最终结果为 n/a 的标准的行,但我真的想将现有数据保留在这些行中,即不运行替换方法。
这是进行选择的代码,条件不包含“小时”。
mask = ~data['Length'].str.contains("hour")
这是我的替换代码,它工作正常。我正在重写原始数据。
data['Length'] = data.loc[mask, 'Length'].replace(r'([1])[h]\s', r'\1 hour ', regex=True)
data['Length'] = data.loc[mask, 'Length'].replace(r'([2-9]*)[h]\s', r'\1 hours ', regex=True)
data['Length'] = data.loc[mask, 'Length'].replace(r'([0-9]*)[m]', r'\1 minutes', regex=True)
输入数据。第 0 行具有我在原始数据中需要的格式。其他行需要通过替换函数运行。
0 1 hour 30 minutes
1 2h 45m
2 4h 30m
3 1h 45m
4 1h 45m
5 1h 45m
6 1h 45m
7 1h 45m
当前输出,我想保留第0行的原始数据。
0 NaN
1 2 hours 45 minutes
2 4 hours 30 minutes
3 1 hour 45 minutes
4 1 hour 45 minutes
5 1 hour 45 minutes
6 1 hour 45 minutes
7 1 hour 45 minutes
现在我不习惯我使用的方法,所以如果有更好的方法,那么我愿意接受建议,但希望我缺少一些简单的东西。看起来它应该很简单,因为它只是一个 if-else。谢谢
【问题讨论】:
标签: python pandas replace contains pandas-loc