Python/Pandas if语句和索引

2024-05-19 00:05:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我相信这个问题有一个简单的解决办法,但我似乎找不到。在

我试图检查列表中的年龄是否在数据帧的“年龄”列中。但是,它只是比较索引而不是列。在

下面是我程序中的一段简化代码:

def findages(data,ages):
    for age in ages:
        if age in data['age']:
            print('yes')
        else:
            print('no')

我也尝试过:

^{pr2}$

数据帧看起来像这样

                 age     x     Lambda             L
0       1.258930e+05  0.01       91.0  5.349000e+25
1       1.258930e+05  0.01       94.0  1.188800e+26
2       1.258930e+05  0.01       96.0  1.962700e+26
3       1.258930e+05  0.01       98.0  3.169400e+26   
4       1.258930e+05  0.01      100.0  5.010800e+26

列表如下:

ages = ([125893.0, 4e7,5e9])

我做错什么了?在


Tags: 数据代码in程序列表foragedata
2条回答

数据帧列访问返回序列

在您的代码中,data['age']返回一系列列age。在本例中,in运算符将与索引进行比较。要与序列中的值进行比较,请使用.values属性来获取序列值的数组。在

举例说明:

import pandas as pd

df = pd.DataFrame({'age':[33, 34], 'pet':['Dog', 'Cat']}, index=['Bob', 'Mary'])

ages = [5, 33, 67]

def findages(data, ages):
    for age in ages:
        if age in data['age'].values:
            print('yes')
        else:
            print('no')

findages(df, ages)

^{pr2}$

^{}^{}一起使用:

np.where(data['age'].isin(ages),'yes','no')

样品:

^{pr2}$

按样本编辑:

print (data)
        age     x  Lambda             L
0  125893.0  0.01    91.0  5.349000e+25
1  125893.0  0.01    94.0  1.188800e+26
2  125893.0  0.01    96.0  1.962700e+26
3  125893.0  0.01    98.0  3.169400e+26
4  125893.0  0.01   100.0  5.010800e+26

ages = ([125893.0, 4e7,5e9])
print (np.where(data['age'].isin(ages),'yes','no'))
['yes' 'yes' 'yes' 'yes' 'yes']

相关问题 更多 >

    热门问题