使用pandas根据给定条件修改某些单元格

时间:2016-05-09 17:53:54

标签: python-2.7 pandas

假设我的数据框如下所示。

dbms.allow_format_migration=true

我只想修改List_col和List_row中的那些单元格。所以我会得到类似下面的内容,这些单元格被'X'替换。

df = pd.DataFrame({
              'name' : ['1st', '2nd', '3rd'],
              'john_01' : [1, 2, 3],
              'mary_02' : [4,5,6],
              'peter_03' : [7, 8, 9],
              'roger_04' : [10,11, 12],
              'ken_05' : [13, 14, 15],
                 })

df2 = df.set_index('name')

          john_01  ken_05  mary_02  peter_03  roger_04
name                                              
1st         1      13        4         7        10
2nd         2      14        5         8        11
3rd         3      15        6         9        12


Modify_List_col = ['mary_02','peter_03']

Modify_List_row = ['2nd'] # use tolist() to get this list from additional files

有人知道如何使用熊猫在一行中获得结果吗?

1 个答案:

答案 0 :(得分:1)

您可以使用loc方法:

In[25]: df = pd.DataFrame(pd.np.arange(25).reshape(5,5)).set_index(0)

In[26]: df
Out[26]: 
     1   2   3   4
0                 
0    1   2   3   4
5    6   7   8   9
10  11  12  13  14
15  16  17  18  19
20  21  22  23  24


In[27]: df.loc[[10,15],[2,3,4]] = "x"

In[28]: df
Out[28]: 
     1   2   3   4
0                 
0    1   2   3   4
5    6   7   8   9
10  11   x   x   x
15  16   x   x   x
20  21  22  23  24

为此,只需将第0列设置为索引,然后使用loc选择数据框的部分并指定值" x"。

它对您上一个数据集的工作方式相同:

In[51]: Modify_List_col = ['mary_02', 'peter_03']
        Modify_List_row = ['2nd']
        df.loc[Modify_List_row, Modify_List_col] = "X"

In[52]: df
Out[52]: 
      john_01  ken_05 mary_02 peter_03  roger_04
name                                            
1st         1      13       4        7        10
2nd         2      14       X        X        11
3rd         3      15       6        9        12

我希望这可以帮到你。