df = pd.DataFrame({'x':['a','b','c','d'],'y':[[1],[3,4],[2],[5]]})我想提取列表[3,4]所以我做了df.loc[df.x=='b','y'].tolist()但它返回一個(gè)嵌套列表。[[3,4]]如何從數(shù)據(jù)框中獲取非嵌套列表?
4 回答

躍然一笑
TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個(gè)贊
你的loc
表達(dá)式返回一個(gè)序列而不是一個(gè)標(biāo)量,你只需要選擇它的第一個(gè)也是唯一的元素:
df.loc[df.x=='b','y'].iloc[0]

侃侃無(wú)極
TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊
你可以explode先
df1=df.explode('y')
df1.loc[df1.x=='b','y'].tolist()
...
[3, 4]
也很簡(jiǎn)單修復(fù)
df.loc[df.x=='b','y']
[3, 4]

暮色呼如
TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊
如果您嘗試獲取單個(gè)單元格值,請(qǐng)嘗試df.at
,它保證單個(gè)值:
df.at[pd.Index(df['x']).get_loc('b'), 'y'] # [3, 4]
如果密鑰不存在,此解決方案肯定會(huì)失?。?/p>
df.at[pd.Index(df['x']).get_loc('xyz'), 'y'] # KeyError: 'xyz'
該pd.Index(df['x']).get_loc('b')
表達(dá)式也可以替換為df['x'].eq(b).argmax()
,但請(qǐng)注意,如果“b”不存在,它將返回不正確的結(jié)果。

動(dòng)漫人物
TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超10個(gè)贊
嘗試loc
和squeeze
In [621]: df.loc[df.x=='b','y'].squeeze() Out[621]: [3, 4]
添加回答
舉報(bào)
0/150
提交
取消