如何用Pandas提取CSV中指定姓名对应的信用值并存入变量?
如何用Pandas根据姓名提取对应的Credit数值?
我来帮你搞定这个问题!你现在得到的输出是Pandas的Series对象,所以会附带索引和数据类型信息,要拿到纯数值用于后续运算,有几种简单的修正方法:
首先先确认你的CSV内容:
Names Credit
0 James 21
1 John 34
2 Lucas 20
3 William 11
问题原因
你原代码里的df[df['Names'] == n]['Credit']返回的是一个Series对象(即使只有一个匹配项),所以输出会包含索引、列名和数据类型,而不是单纯的数值。
解决方案
方法1:用.iloc[0]提取第一个匹配值
这是最直观的方式,直接取筛选后Series的第一个元素:
import pandas as pd df = pd.read_csv('file.csv') n = input('Enter a name: ') x = df[df['Names'] == n]['Credit'].iloc[0] print(x) # 输入John会输出34
方法2:用.item()直接获取原生数值
当你确定只有一个匹配结果时,.item()可以直接返回Python原生的int/float类型,非常适合后续数学运算:
import pandas as pd df = pd.read_csv('file.csv') n = input('Enter a name: ') x = df[df['Names'] == n]['Credit'].item() print(x)
方法3:用.at[]精准定位
先找到匹配行的索引,再用.at[]直接定位单元格值:
import pandas as pd df = pd.read_csv('file.csv') n = input('Enter a name: ') match_row = df[df['Names'] == n] x = match_row.at[match_row.index[0], 'Credit'] print(x)
方法4:设置姓名为索引,高效多次查询
如果需要多次根据姓名查找,把Names列设为索引会更高效:
import pandas as pd df = pd.read_csv('file.csv') df.set_index('Names', inplace=True) # 将Names设为索引 n = input('Enter a name: ') x = df.loc[n, 'Credit'] print(x)
额外优化:处理姓名不存在的情况
如果输入的姓名不在数据里,上面的方法会报错,你可以加个判断让代码更健壮:
import pandas as pd df = pd.read_csv('file.csv') n = input('Enter a name: ') matches = df[df['Names'] == n] if not matches.empty: x = matches['Credit'].item() print(f"Credit value: {x}") # 这里可以写你的后续数学运算代码 else: print(f"Oops, name '{n}' wasn't found in the data!")
内容的提问来源于stack exchange,提问作者AFANGA ZAKARYA
相关产品推荐
相关产品推荐

