我在提取一个变量的值时遇到了一些麻烦。例如,下面的 Dataframe :
A B p1 1 p1 2 p3 3 p2 4
当B=3时,我如何得到A的值?每次当我提取A的值时,我得到的是一个对象,而不是字符串。
B=3
A
f0ofjuux1#
您可以使用loc来获取满足您的条件的序列,然后使用iloc来获取第一个元素:
loc
iloc
In [2]: df Out[2]: A B 0 p1 1 1 p1 2 2 p3 3 3 p2 4 In [3]: df.loc[df['B'] == 3, 'A'] Out[3]: 2 p3 Name: A, dtype: object In [4]: df.loc[df['B'] == 3, 'A'].iloc[0] Out[4]: 'p3'
3zwjbxry2#
您可以尝试query,它的输入量更少:
query
df.query('B==3')['A']
lx0bsm1f3#
df[df['B']==3]['A'],假设df是您的pandas.DataFrame。
df[df['B']==3]['A']
dnph8jn44#
如果您只需要项目本身而不需要括号,请使用df[df['B']==3]['A'].values[0]
df[df['B']==3]['A'].values[0]
pgccezyw5#
Edited:我在前面的章节中所描述的是链接索引,在某些情况下可能不起作用。最佳实践是使用loc,但概念是相同的:
df.loc[row, col]
df.loc[df['B'] == 3, 'A']
上一页:我认为用这些术语思考更容易,但要借用其他答案。
df[*column*][*row*]
其中,column 和 row 指向要返回的值。对于您的示例,column 为'A',而对于 row,您使用了掩码:
df['B'] == 3
要从序列中获取第一个匹配值,有几个选项:
df['A'][df['B'] == 3].values[0] df['A'][df['B'] == 3].iloc[0] df['A'][df['B'] == 3].to_numpy()[0]
ssgvzors6#
您可以使用squeeze来代替iloc[0]。如果只有一个值,它看起来会更清楚:
squeeze
iloc[0]
df.loc[df['B'] == 3, 'A'].squeeze()
输出量:
'p3'
pftdvrlh7#
df.loc[df['B']=='give-specific-value', 'A']```` I have also worked on this clausing and extraction operations for my assignment.
7条答案
按热度按时间f0ofjuux1#
您可以使用
loc
来获取满足您的条件的序列,然后使用iloc
来获取第一个元素:3zwjbxry2#
您可以尝试
query
,它的输入量更少:lx0bsm1f3#
df[df['B']==3]['A']
,假设df是您的pandas.DataFrame。dnph8jn44#
如果您只需要项目本身而不需要括号,请使用
df[df['B']==3]['A'].values[0]
pgccezyw5#
Edited:我在前面的章节中所描述的是链接索引,在某些情况下可能不起作用。最佳实践是使用loc,但概念是相同的:
上一页:我认为用这些术语思考更容易,但要借用其他答案。
其中,column 和 row 指向要返回的值。对于您的示例,column 为'A',而对于 row,您使用了掩码:
要从序列中获取第一个匹配值,有几个选项:
ssgvzors6#
您可以使用
squeeze
来代替iloc[0]
。如果只有一个值,它看起来会更清楚:输出量:
pftdvrlh7#