根据另一个将新值分配给熊猫数据框中的位置

时间:2019-10-30 19:41:28

标签: python pandas

我有一个看起来像这样的数据框(temp_table)

    0                   1        index  TF      SASA
    6.5227469102210085  222.0    227    False   0.020834600771546936
    3.7721281528298034  223.0    224    False   0.25000423735995525
    5.582663533428659   223.0    225    True    0.8578536501672815
    5.314596793152923   223.0    226    False   0.15678231834437872
    6.107712830515959   223.0    227    False   0.020834600771546936
    3.8005850006883994  224.0    225    False   0.8578536501672815
    5.604560057482539   224.0    226    False   0.15678231834437872
    5.6112774758639885  224.0    227    False   0.020834600771546936
    5.3685540383952395  224.0    228    False   0.3081807524138729

如果索引= 225,我想使列'TF'为True。理想输出为

    0                   1        index  TF      SASA
    6.5227469102210085  222.0    227    False   0.020834600771546936
    3.7721281528298034  223.0    224    False   0.25000423735995525
    5.582663533428659   223.0    225    True    0.8578536501672815
    5.314596793152923   223.0    226    False   0.15678231834437872
    6.107712830515959   223.0    227    False   0.020834600771546936
    3.8005850006883994  224.0    225    True    0.8578536501672815
    5.604560057482539   224.0    226    False   0.15678231834437872
    5.6112774758639885  224.0    227    False   0.020834600771546936
    5.3685540383952395  224.0    228    False   0.3081807524138729

我尝试使用

temp_table.loc[temp_table.index == 225, 'TF'] = True

但是,数据帧在Spyder变量查看器中保持不变。我做错了什么吗?我应该完全尝试其他方法吗?

更新1

temp_table.columns
Out[98]: Index([0, 1, 'index', 'TF', 'SASA'], dtype='object')

    temp_table['index'] == 225
Out[99]: 
0       False
1       False
3       False
4       False
7       False
8       False
9       False
12      False
13      False
14      False
15      False
16      False
19      False
20      False
21      False
22      False
23      False
24      False
27      False
28      False
29      False
30      False
31      False
32      False
35      False
36      False
37      False
38      False
39      False
40      False

3393    False
3394    False
3395    False
3396    False
3399    False
3400    False
3401    False
3402    False
3405    False
3406    False
3410    False
3411    False
3416    False
3417    False
3426    False
3427    False
3437    False
3438    False
3449    False
3450    False
3458    False
3459    False
3465    False
3466    False
3478    False
3488    False
3489    False
3497    False
3498    False
3504    False
Name: index, Length: 1754, dtype: bool

更新2

temp_table['index'].head(10).to_dict()
Out[118]: 
{0: ' 1',
 1: ' 2',
 3: ' 2',
 4: ' 3',
 7: ' 3',
 8: ' 4',
 9: ' 18',
 12: ' 4',
 13: ' 5',
 14: ' 18'}

3 个答案:

答案 0 :(得分:0)

因为temp_table.indextemp_table的索引,所以它不是列index。使用方括号

temp_table.loc[temp_table['index'].str.strip() == '225', 'TF'] = True

Out[280]:
          0      1  index     TF      SASA
0  6.522747  222.0    227  False  0.020835
1  3.772128  223.0    224  False  0.250004
2  5.582664  223.0    225   True  0.857854
3  5.314597  223.0    226  False  0.156782
4  6.107713  223.0    227  False  0.020835
5  3.800585  224.0    225   True  0.857854
6  5.604560  224.0    226  False  0.156782
7  5.611277  224.0    227  False  0.020835
8  5.368554  224.0    228  False  0.308181

答案 1 :(得分:0)

您可以使用:

df.TF = (df['index'] == 225)

或多个值:

df.TF = df['index'].apply(lambda x: x in [225,...])

答案 2 :(得分:0)

尝试一下:

  temp_table['TF'] = [int(x) == 225 for x in temp_table['index']]