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

时间:2017-12-21 22:26:45

标签: 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

我想替换日期' 2016-09-10'中value1中的所有df['value']。与value7。 Date列是一个字符串系列。

我查看了pd.DataFrame.replace()的文档,但无法根据单独的列找到条件替换的参数。想要完成这些工作的大量丑陋方法(for循环使用.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)

2 个答案:

答案 0 :(得分:3)

怎么样

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

您可能需要阅读Indexing and Selecting Data部分和this了解更多信息

答案 1 :(得分:0)

如果你想保持其他一切并改变你需要的东西,试试这个,

df.loc[df['date'] == '2016-09-10' , 'value'] = 'value7'