如果另一列的值与某些条件匹配,我想打印一列的值。在下面的示例中,如果学生的分数为5,我想打印学生的姓名。(为简单起见,数据框中只有一名学生。
df = pd.DataFrame()
df['name'] = ['jane']
df['score'] = [5]
当我尝试使用最简单的解决方案打印名称时,我得到的不仅仅是名称:
In [62]:
print(df['name'][df['score'] == 5])
0 jane
Name: name, dtype: object
当我尝试使用.to_string函数时,我仍然得到索引号:
In [60]:
print(df['name'][df['score'] == 5].to_string())
Out[60]:
[0 jane
Name: name, dtype: object]
最后,我查看了.to_string()documentation,发现了这个:
index:bool,可选择是否打印索引(行)标签,默认 真
但是,当我尝试使用.to_string(index = False)时,出现错误:
In [64]:
df['name'][df['score'] == 5].to_string(index = False)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-54-4ed8cfe4b098> in <module>()
----> 6 df['name'][df['score'] == 5].to_string(index = False)
TypeError: to_string() got an unexpected keyword argument 'index'
答案 0 :(得分:7)
您关联的文档适用于DataFrame.to_string
,但您在系列上调用to_string
(因为您首先选择一列df['name']
)。 Series.to_string
The documentation表示它不接受index
参数。
有人可能会争辩说它应该有一个,但行为至少与文档一致。
答案 1 :(得分:1)
表达式:
df['name'][df['score'] == 5][0]
返回 Series 字符串。如果要打印 Series 中的所有字符串,则应该迭代它,就像迭代列表或元组一样。
因此,如果您要打印所有分数为5的学生的姓名:
for student in df['name'][df['score'] == 5]:
print(student)
答案 2 :(得分:0)
这可以按你的喜好工作:
In [10]:
print(df[df['score'] == 5][['score','name']].to_string(columns=['name'],header=False,index=False))
Out[10]:
jane