亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從熊貓數據框中提取非嵌套列表

從熊貓數據框中提取非嵌套列表

互換的青春 2023-02-15 16:05:09
df = pd.DataFrame({'x':['a','b','c','d'],'y':[[1],[3,4],[2],[5]]})我想提取列表[3,4]所以我做了df.loc[df.x=='b','y'].tolist()但它返回一個嵌套列表。[[3,4]]如何從數據框中獲取非嵌套列表?
查看完整描述

4 回答

?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

你的loc表達式返回一個序列而不是一個標量,你只需要選擇它的第一個也是唯一的元素:

df.loc[df.x=='b','y'].iloc[0]


查看完整回答
反對 回復 2023-02-15
?
侃侃無極

TA貢獻2051條經驗 獲得超10個贊

你可以explode先


df1=df.explode('y')

df1.loc[df1.x=='b','y'].tolist()

... 

[3, 4]

也很簡單修復


df.loc[df.x=='b','y']

[3, 4]


查看完整回答
反對 回復 2023-02-15
?
暮色呼如

TA貢獻1853條經驗 獲得超9個贊

如果您嘗試獲取單個單元格值,請嘗試df.at,它保證單個值:

df.at[pd.Index(df['x']).get_loc('b'), 'y']
# [3, 4]

如果密鑰不存在,此解決方案肯定會失?。?/p>

df.at[pd.Index(df['x']).get_loc('xyz'), 'y']
# KeyError: 'xyz'

pd.Index(df['x']).get_loc('b')表達式也可以替換為df['x'].eq(b).argmax(),但請注意,如果“b”不存在,它將返回不正確的結果。


查看完整回答
反對 回復 2023-02-15
?
動漫人物

TA貢獻1815條經驗 獲得超10個贊

嘗試locsqueeze

In [621]: df.loc[df.x=='b','y'].squeeze()
Out[621]: [3, 4]


查看完整回答
反對 回復 2023-02-15
  • 4 回答
  • 0 關注
  • 132 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號