我正在尝试从数据框中选择一个值。但问题是输出是数据类型和列名。 这是我从csv文件中读取的数据框,
Name,Code
blackberry,1
wineberry,2
rasberry,1
blueberry,1
mulberry,2
这是我的测试代码 -
dataFrame=pd.read_csv("test.csv")
value = dataFrame.loc[dataFrame['Name'] == 'rasberry']['Code']
print(value)
strvalue=str(value)
if(strvalue=="1"):
print("got it")
value
的预期输出为1
但
2 1\nName: Code, dtype: int64
这就是if条件不起作用的原因。我怎样才能获得具体的价值?
我正在使用pandas
答案 0 :(得分:4)
您获得的值是一个Series对象。您可以使用.iloc
从中提取值:
value.iloc[0]
# 1
或者您可以使用.values
提取基础numpy数组,然后使用index提取值:
value.values[0]
# 1
答案 1 :(得分:2)
dataFrame['Name']
返回pd.Series
dataFrame['Name'] == 'rasberry'
返回pd.Series
dtype
bool
dataFrame.loc[dataFrame['Name'] == 'rasberry']
使用布尔pd.Series
切片dataFrame
,返回pd.DataFrame
<{1}} dataFrame
dataFrame.loc[dataFrame['Name'] == 'rasberry']['code']
是pd.Series
,它是来自第3步的切片数据框中名为'code'
的列。
'Name'
列中的元素是唯一的,那么这将是一行pd.Series
。'value'
和['value']
from io import StringIO
txt = """Name,Code
blackberry,1
wineberry,2
rasberry,1
blueberry,1
mulberry,2"""
iloc
获取第一个值dataFrame=pd.read_csv(StringIO(txt))
value = dataFrame.query('Name == "rasberry"').Code.iloc[0]
print(value)
iat
获取第一个值dataFrame=pd.read_csv(StringIO(txt))
value = dataFrame.query('Name == "rasberry"').Code.iat[0]
print(value)
loc
dataFrame=pd.read_csv(StringIO(txt), index_col='Name')
value = dataFrame.loc['rasberry', 'Code']
print(value)
at
dataFrame=pd.read_csv(StringIO(txt), index_col='Name')
value = dataFrame.at['rasberry', 'Code']
print(value)
get_value
dataFrame=pd.read_csv(StringIO(txt), index_col='Name')
value = dataFrame.get_value('rasberry', 'Code')
print(value)
如果只存在一个非索引列,则squeeze
时指定索引列series=pd.read_csv(StringIO(txt), index_col='Name', squeeze=True)
value = series.rasberry
print(value)