Python 为除一列之外的每一列的行添加值

Python 为除一列之外的每一列的行添加值,python,pandas,insert,row,dataframe,Python,Pandas,Insert,Row,Dataframe,我需要将“-1”值添加到一行中除一个单元格外的每个单元格。我需要根据列的名称而不是数字来找到这个 示例(这应该是一行): 0 | 1 | 2 |-1 | 4 | 我的代码: for i in myRange: P_total.ix[i] = [-1 for n in range(len(P_total.columns))] 这段代码将“-1”添加到整行中,如何检查每个特定的列名中是否包含“name”字符串 我知道如何做到这一点,但不是在一个 if "name" not in examp

我需要将“-1”值添加到一行中除一个单元格外的每个单元格。我需要根据列的名称而不是数字来找到这个

示例(这应该是一行):

0 | 1 | 2 |-1 | 4 |

我的代码:

for i in myRange:
    P_total.ix[i] = [-1 for n in range(len(P_total.columns))]
这段代码将“-1”添加到整行中,如何检查每个特定的列名中是否包含“name”字符串

我知道如何做到这一点,但不是在一个

if "name" not in exampleString:
    //any code

谢谢大家。

您可以使用
drop
来计算
p\u总数。列
,然后用它子集您的数据帧:

np.random.seed(632)
P_total = pd.DataFrame(np.random.randn(10,5), columns=list('abcde'))

In [262]: P_total
Out[262]:
          a         b         c         d         e
0 -0.202506  1.245011   -1.787930 -1.076415
1  0.603727 -1.242478  0.430865 -1.689979  0.885975
2 -1.408643  0.545198 -1.351751 -0.095847  1.506013
3  1.454067 -1.081069 -0.162412 -0.141595 -1.180774
4 -0.578398  0.780636  0.873509 -1.373164 -0.956986
5  0.881837 -0.137655 -0.052613 -0.527390 -0.818549
6  1.401598  2.229587  0.312385 -0.009606  0.604757
7  0.286984 -0.210015  0.078443 -0.539372  1.910570
8  0.494034  1.302240  0.134238  0.741682  0.888207
9 -1.729944  0.179502 -1.386532  0.613595  0.594123

P_total.ix[0, P_total.columns.drop('c')] = -1

In [264]: P_total
Out[264]:
          a         b         c         d         e
0 -0.202506 -1.000000 -1.000000 -1.000000 -1.000000
1  0.603727 -1.242478  0.430865 -1.689979  0.885975
2 -1.408643  0.545198 -1.351751 -0.095847  1.506013
3  1.454067 -1.081069 -0.162412 -0.141595 -1.180774
4 -0.578398  0.780636  0.873509 -1.373164 -0.956986
5  0.881837 -0.137655 -0.052613 -0.527390 -0.818549
6  1.401598  2.229587  0.312385 -0.009606  0.604757
7  0.286984 -0.210015  0.078443 -0.539372  1.910570
8  0.494034  1.302240  0.134238  0.741682  0.888207
9 -1.729944  0.179502 -1.386532  0.613595  0.594123
或者,您也可以不使用循环,通过将数据帧与以下列进行子集设置:

P_total[P_total.columns.drop('c')] = -1

In [266]: P_total
Out[266]:
   a  b         c  d  e
0 -1 -1  0.628800 -1 -1
1 -1 -1  0.430865 -1 -1
2 -1 -1 -1.351751 -1 -1
3 -1 -1 -0.162412 -1 -1
4 -1 -1  0.873509 -1 -1
5 -1 -1 -0.052613 -1 -1
6 -1 -1  0.312385 -1 -1
7 -1 -1  0.078443 -1 -1
8 -1 -1  0.134238 -1 -1
9 -1 -1 -1.386532 -1 -1  
编辑

如果需要使用名称筛选列,可以使用
str.contains
方法:

In [283]: P_total.columns
Out[283]: Index(['a', 'b', 'c', 'd', 'e'], dtype='object')

In [284]: P_total.columns.str.contains('a')
Out[284]: array([ True, False, False, False, False], dtype=bool)
your_columns = P_total.columns.str.contains('a')
P_total.ix[0, your_columns]
然后将结果传递到
ix
方法的第二个字段:

In [283]: P_total.columns
Out[283]: Index(['a', 'b', 'c', 'd', 'e'], dtype='object')

In [284]: P_total.columns.str.contains('a')
Out[284]: array([ True, False, False, False, False], dtype=bool)
your_columns = P_total.columns.str.contains('a')
P_total.ix[0, your_columns]

您能否发布原始输入数据、代码以重现df和所需输出P_total.ix[i,P_total.columns.drop(“idName”)]=-1工作:)谢谢。(idName是我列的名称)。