如果满足不同行中的条件,则替换数据框中的字符串

sac*_*cuL 3 python pandas

我有一个由日期和值列组成的数据框,有点像这样:

>>> df
         date   value
0  2016-09-10  value1
1  2016-09-10  value1
2  2016-09-10  value2
3  2016-09-10  value1
4  2016-09-12  value3
5  2016-09-12  value1
6  2016-09-13  value2
7  2016-09-13  value1
Run Code Online (Sandbox Code Playgroud)

我想,以取代所有的value1df['value']那年秋天上,日期“2016年9月10日” value7。日期列是一个字符串系列。

我查看了 的文档pd.DataFrame.replace(),但找不到基于单独列的条件替换的参数。想到很多丑陋的方法来完成这项工作(for循环 with.loc可以解决问题),但是有没有人知道一个很好的,一两行,更pythonic的方法来做到这一点?提前致谢!

如果您希望此迷你虚拟数据框进行试验:

import pandas as pd

data = {'date': ['2016-09-10', '2016-09-10',
                 '2016-09-10', '2016-09-10',
                 '2016-09-12', '2016-09-12',
                 '2016-09-13', '2016-09-13'],
        'value': ['value1', 'value1', 'value2', 'value1',
                  'value3', 'value1', 'value2', 'value1']}

df = pd.DataFrame(data)
Run Code Online (Sandbox Code Playgroud)

tar*_*pka 7

怎么样

>> df.loc[(df['date'] == '2016-09-10') & (df['value'] == 'value1'), 'value'] = 'value7'
Run Code Online (Sandbox Code Playgroud)

您可能需要阅读“索引和选择数据”部分以及此内容以获取更多信息