从熊猫数据框中提取非嵌套列表

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]]

如何从数据框中获取非嵌套列表?


互换的青春
浏览 97回答 4
4回答

跃然一笑

你的loc表达式返回一个序列而不是一个标量,你只需要选择它的第一个也是唯一的元素:df.loc[df.x=='b','y'].iloc[0]

侃侃无极

你可以explode先df1=df.explode('y')df1.loc[df1.x=='b','y'].tolist()... [3, 4]也很简单修复df.loc[df.x=='b','y'][3, 4]

暮色呼如

如果您尝试获取单个单元格值,请尝试df.at,它保证单个值:df.at[pd.Index(df['x']).get_loc('b'), 'y'] # [3, 4]如果密钥不存在,此解决方案肯定会失败: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”不存在,它将返回不正确的结果。

动漫人物

尝试loc和squeezeIn [621]: df.loc[df.x=='b','y'].squeeze() Out[621]: [3, 4]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python