1.4.2 boolean索引
import numpy as np import pandas as pd df = pd.DataFrame(np.random.randint(0, 151, size = (1000, 3)), columns = ['Python', 'English', 'Math']) cnt = df['Python'] == 150 df[cnt]
import numpy as np import pandas as pd df = pd.DataFrame(np.random.randint(0, 151, size = (1000, 3)), columns = ['Python', 'English', 'Math']) cnt1 = df['Python'] > 140 cnt2 = df['Math'] > 140 cnt = cnt1 & cnt2 df[cnt]
1.4.3 赋值操作
1.4.3.1 新增一列
🚩我们在原有的三学科基础上增加一门 C++ 的成绩
import numpy as np import pandas as pd df = pd.DataFrame(np.random.randint(60, 101, size = (5, 3)), columns = ['Python', 'English', 'Math']) display(df) # 添加一个新学科:C++【增加一列】 df['C++'] = np.random.randint(60, 101, size = 5) display(df)
1.4.3.2 整列的变化
🚩我们让 Python 这门课的所有学生的分数都增加 10 分,再将 Math,C++的分数都增加10分
import numpy as np import pandas as pd df = pd.DataFrame(np.random.randint(60, 101, size = (5, 3)), columns = ['Python', 'English', 'Math']) df['C++'] = np.random.randint(60, 101, size = 5) display(df) # 将 Python 这列的分数都增加 10 分 df['Python'] += 10 display(df) # 将 Math,C++的分数都增加10分 df[['Math', 'C++']] += 10 display(df)
1.4.3.3 列上元素的变化
🚩我们将 Math 中索引是 2 的人的分数改为 100,再将 Math 中索引是 2,3 的人的分数改为 99
import numpy as np import pandas as pd df = pd.DataFrame(np.random.randint(60, 101, size = (5, 3)), columns = ['Python', 'English', 'Math']) df['C++'] = np.random.randint(60, 101, size = 5) display(df) # 将 Math 中索引是 2 的人的分数改为 100 df['Math'][2] = 100 display(df) # 将 Math 中索引是 2,3 的人的分数改为 99 df['Math'][[2, 3]] = 99 display(df)
1.4.3.4 批量操作多个数据
🚩将 Math,C++ 中索引是 2,3 的人的分数改为 80
import numpy as np import pandas as pd df = pd.DataFrame(np.random.randint(60, 101, size = (5, 3)), columns = ['Python', 'English', 'Math']) df['C++'] = np.random.randint(60, 101, size = 5) display(df) # 将 Math,C++ 中索引是 2,3 的人的分数改为 80 # df[['Math', 'C++']][[2, 3]] = 80 这种操作是错误的 df.loc[[2, 3], ['Math', 'C++']] = 80 display(df)
在条件的情况下修改多个值,必须使用 loc:
import numpy as np import pandas as pd df = pd.DataFrame(np.random.randint(60, 101, size = (5, 3)), columns = ['Python', 'English', 'Math']) df['C++'] = np.random.randint(60, 101, size = 5) display(df) # 将 C++的分数大于 80 的人的分数统一减去 20分 cnt = df['C++'] > 80 # 使用 loc 修改数据 df.loc[cnt] -= 20 display(df)