修改数据框中的多个行

时间:2016-05-03 15:11:57

标签: python python-2.7 pandas

假设我有一个数据帧。我想修改具有特定值的行列表。

例如,下面是我的数据框。

df = pd.DataFrame({
"strings":["A", "B", "C", "D", "E"], 
  "value":["a", "b", "c", "d", "f"], 
  "price":["1", "2", "3", "4", "5"]})

我想用' 0'替换所有单元格。在行C,D和E中,如下所示。行= [' C',' D',' E']

df = pd.DataFrame({
"strings":["A", "B", "C", "D", "E"], 
  "value":["a", "b", "0", "0", "0"], 
  "price":["1", "2", "0", "0", "0"]})

我知道我们可以通过简单地给出行来实现这一目标。名称和某些值,但是由于我们要修改很多行,我们如何使用pandas更有效地做到这一点?

有人暗示吗?

2 个答案:

答案 0 :(得分:5)

如果我理解正确,你想要列中的所有值"价格"和"价值"对于列"字符串"的行设置为零具有C,D或E值。

df.loc[df.strings.isin(["C", "D", "E"]), df.columns.difference(["strings"])] = 0
df
Out[82]: 
  price strings value
0     1       A     a
1     2       B     b
2     0       C     0
3     0       D     0
4     0       E     0

答案 1 :(得分:1)

这是另一种方法,

考虑您的数据是这样的:

  price strings value
0     1       A     a
1     2       B     b
2     3       C     c
3     4       D     d
4     5       E     f

现在让我们将strings列作为索引:

df.set_index('strings', inplace='True')

#Result
        price value
strings
A           1     a
B           2     b
C           3     c
D           4     d
E           5     f

现在将行C, D, E的值设置为0

df.loc[['C', 'D','E']] = 0

#Result
        price value
strings
A           1     a
B           2     b
C           0     0
D           0     0
E           0     0