如何设置pandas DataFrame中特定单元格的值(附实例)

613 阅读2分钟

你可以使用以下基本语法来设置pandas DataFrame中特定单元格的值:

#set value at row index 0 and column 'col_name' to be 99
df.at[0, 'col_name'] = 99

下面的例子展示了如何通过以下pandas DataFrame实际使用这种语法:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'points': [25, 12, 15, 14, 19, 23, 25, 29],
                   'assists': [5, 7, 7, 9, 12, 9, 9, 4],
                   'rebounds': [11, 8, 10, 6, 6, 5, 9, 12]})

#view DataFrame
df

	points	assists	rebounds
0	25	5	11
1	12	7	8
2	15	7	10
3	14	9	6
4	19	12	6
5	23	9	5
6	25	9	9
7	29	4	12

例1:设置潘达斯中一个单元格的值

下面的代码显示了如何将 "points "列的第3个索引位置的值设置为99:

#set value in 3rd index position and 'points' column to be 99
df.at[3, 'points'] = 99

#view updated DataFrame
df

        points	assists	rebounds
0	25	5	11
1	12	7	8
2	15	7	10
3	99	9	6
4	19	12	6
5	23	9	5
6	25	9	9
7	29	4	12

请注意,"积分 "列的第3个索引位置的值被改变了,而DataFrame中的所有其他值都没有变化。

例2:在Pandas中设置多个单元格的值

下面的代码展示了如何同时设置一个区域中多个单元格的值:

#set values in index positions 0 to 3 in 'points' column to be 99 
df.at[0:3, 'points'] = 99

#view updated DataFrame
df

	points	assists	rebounds
0	99	5	11
1	99	7	8
2	99	7	10
3	99	9	6
4	19	12	6
5	23	9	5
6	25	9	9
7	29	4	12

例3:在潘达斯中有条件地设置数值

下面的代码展示了如何将 "篮板 "列中的值设置为99,只有当积分列中的值大于20的时候

#set values in 'rebounds' column to be 99 if value in points column is greater than 20
df.loc[df['points']>20, ['rebounds']] = 99

#view updated DataFrame
df

	points	assists	rebounds
0	25	5	99
1	12	7	8
2	15	7	10
3	14	9	6
4	19	12	6
5	23	9	99
6	25	9	99
7	29	4	99

请注意,如果积分列中的值大于20,篮板列中的每个值都被改为99。

所有其他数值都保持不变。

其他资源

下面的教程解释了如何在pandas中执行其他常用函数:

如何从Pandas数据框架中获取单元格值
如何获取Pandas数据框架的第一行
如何获取Pandas数据框架的第一列
如何在Pandas中获取列与值匹配的行的索引