在本指南中,你将看到在 Pandas DataFrame中应用IF条件的5种不同方法。具体来说,你将看到Pandas DataFrame应用IF条件的方法:
- 一组数字
- 一组数字和 lambda
- 字符串
- 字符串和 Lambada
- 或条件
Pandas DataFrame如何使用IF条件?假设你在 Python中创建了一个具有 10 个数字(从 1 到 10)的 DataFrame。然后,你要应用以下 IF 条件:
- 如果数字等于或小于 4,则赋值为 'True'
- 否则,如果数字大于4,则赋值为 'False'
df.loc[
df[
'column name'] condition, 'new column name'] = 'value if condition is met'
对于我们的Pandas DataFrame IF条件用法示例,Python 代码如下所示:
import pandas as pdnumbers = {'set_of_numbers': [
1,2,3,4,5,6,7,8,9,10]}
df = pd.DataFrame(numbers,columns=[
'set_of_numbers'])df.loc[
df[
'set_of_numbers'] <
= 4, 'equal_or_lower_than_4?'] = 'True'
df.loc[
df[
'set_of_numbers'] > 4, 'equal_or_lower_than_4?'] = 'False' print (df)
这是你将在 Python 中得到的结果:
set_of_numbersequal_or_lower_than_4?
01True
12True
23True
34True
45False
56False
67False
78False
89False
910False
(2) IF 条件 – 一组数字和 lambda
你现在将看到如何通过使用Lambada获得与案例 1 相同的结果,其中条件是:
- 如果数字等于或小于 4,则赋值为 'True'
- 否则,如果数字大于4,则赋值为 'False'
df[
'new column name'] = df[
'column name'].apply(lambda x: 'value if condition is met' if x condition else 'value if condition is not met')
对于我们的Pandas DataFrame IF条件用法示例:
import pandas as pdnumbers = {'set_of_numbers': [
1,2,3,4,5,6,7,8,9,10]}
df = pd.DataFrame(numbers,columns=[
'set_of_numbers'])df[
'equal_or_lower_than_4?'] = df[
'set_of_numbers'].apply(lambda x: 'True' if x <
= 4 else 'False')print (df)
这是你将得到的结果,与案例 1 匹配:
set_of_numbersequal_or_lower_than_4?
01True
12True
23True
34True
45False
56False
67False
78False
89False
910False
(3) IF 条件——字符串
现在,让我们创建一个仅包含具有 4 个 名称的字符串/文本的 DataFrame :Jon、Bill、Maria 和 Emma。条件是:
- 如果名称等于'Bill',则分配值 'Match'
- 否则,如果名称不是 'Bill',则分配值 'Mismatch'
import pandas as pdnames = {'first_name': [
'Jon','Bill','Maria','Emma']}
df = pd.DataFrame(names,columns=[
'first_name'])df.loc[
df[
'first_name'] == 'Bill', 'name_match'] = 'Match'
df.loc[
df[
'first_name'] != 'Bill', 'name_match'] = 'Mismatch'
print (df)
运行上述 Python 代码后,你将看到:
first_namename_match
0JonMismatch
1BillMatch
2MariaMismatch
3EmmaMismatch
(4) IF 条件——字符串和lambda
Pandas DataFrame应用IF条件的方法:使用lambda,你将获得与情况 3 相同的结果:
import pandas as pdnames = {'first_name': [
'Jon','Bill','Maria','Emma']}
df = pd.DataFrame(names,columns=[
'first_name'])df[
'name_match'] = df[
'first_name'].apply(lambda x: 'Match' if x == 'Bill' else 'Mismatch')print (df)
这是 Python 的输出:
first_namename_match
0JonMismatch
1BillMatch
2MariaMismatch
3EmmaMismatch
(5) IF 条件与 OR
Pandas DataFrame如何使用IF条件?在最后一种情况下,让我们应用以下条件:
- 如果名称是“Bill” 或“Emma”,则分配“Match”的值
- 否则,如果名称既不是 'Bill' 也不是 'Emma',则赋值为 'Mismatch'
import pandas as pdnames = {'first_name': [
'Jon','Bill','Maria','Emma']}
df = pd.DataFrame(names,columns=[
'first_name'])df.loc[
(df[
'first_name'] == 'Bill') | (df[
'first_name'] == 'Emma'), 'name_match'] = 'Match'
df.loc[
(df[
'first_name'] != 'Bill') &
(df[
'first_name'] != 'Emma'), 'name_match'] = 'Mismatch'print (df)
运行 Python 代码,你将得到以下结果:
first_namename_match
0JonMismatch
1BillMatch
2MariaMismatch
3EmmaMatch
在现有DataFrame 列下应用 IF 条件到目前为止,你已经了解了如何通过创建新列来应用 IF 条件。或者,你可以将结果存储在现有的DataFrame 列下。Pandas DataFrame应用IF条件的方法:例如,假设你创建了一个包含 12 个数字的 DataFrame,其中最后两个数字为零:'set_of_numbers': [1,2,3,4,5,6,7,8,9,10, 0 , 0 ]然后,你可以应用以下 IF 条件,然后将结果存储在现有的“set_of_numbers”列下:
- 如果数字等于 0,则将值更改为 999
- 如果数字等于 5,则将值更改为 555
import pandas as pdnumbers = {'set_of_numbers': [
1,2,3,4,5,6,7,8,9,10,0,0]}
df = pd.DataFrame(numbers,columns=[
'set_of_numbers'])
print (df)df.loc[
df[
'set_of_numbers'] == 0, 'set_of_numbers'] = 999
df.loc[
df[
'set_of_numbers'] == 5, 'set_of_numbers'] = 555print (df)
以下是之前和之后的结果,在现有的“set_of_numbers”列下,“5”变为“555”,“0”变为“999”:前:
set_of_numbers
01
12
23
34
45
56
67
78
89
910
100
110
后:
set_of_numbers
01
12
23
34
4555
56
67
78
89
910
10999
11999
在另一个实例中,你可能有一个包含NaN 值的 DataFrame 。然后,你可以应用 IF 条件将这些值替换为 zeros,如下例所示:
import pandas as pd
import numpy as npnumbers = {'set_of_numbers': [
1,2,3,4,5,6,7,8,9,10,np.nan,np.nan]}
df = pd.DataFrame(numbers,columns=[
'set_of_numbers'])
print (df)df.loc[
df[
'set_of_numbers'].isnull(), 'set_of_numbers'] = 0
print (df)
在你看到 NaN 值之前,以及在你看到零值之后:前:
set_of_numbers
01.0
12.0
23.0
34.0
45.0
56.0
67.0
78.0
89.0
910.0
10NaN
11NaN
后:
set_of_numbers
01.0
12.0
23.0
34.0
45.0
56.0
67.0
78.0
89.0
910.0
100.0
110.0
结论Pandas DataFrame如何使用IF条件?你刚刚看到了如何在Pandas DataFrame中应用IF条件。在 Python 中确实有多种方法可以应用这样的条件。你可以通过使用Lambada 或仅坚持使用 Pandas来获得相同的结果。最后,它归结为使用最适合你需求的方法。最后,你可能需要查看以下外部资源以获取有关Pandas DataFrame 的其他信息。
推荐阅读
- 如何连接Pandas DataFrame中的列值()
- 安装系统 电脑重装系统,教您电脑怎样运用U盘重装win7系统
- u盘东西删不掉,教您如何恢复正常
- u盘驱动_教您U盘万能驱动
- 笔记本usb接口没反应,教您处理笔记本USB接口没反应的办法
- usb驱动,教您USB万能驱动
- 华硕进bios_教您华硕怎样进入bios
- u盘东西删不掉,教您如何处理U盘内的文件无法删除
- u盘安装系统办法,教您u盘如何安装win7系统