首页 > 解决方案 > 当数据框列由列表组成时,如何从列表中提取特定位置的值

问题描述

我在熊猫数据框中有两列,两列中的每一行都有一个值列表。首先,我想从一列的列表中定位某个值,并从另一列的列表中提取相同位置的相应值。例如,我的数据如下所示:

    Address               Value
[abcd, jkel, swkg]     [30, 25, 87]
[eszl, pqks, jkel]     [21, 35, 42]
[jkel, sqzg]           [11, 34]

当地址为“jkel”时,我想从值列表中提取相应的值。例如,地址列第一行的列表在列表的第二个位置有“jkel”。该地址对应的值将是值列表中的第二项,即 25。最终,我想创建一个如下所示的新数据框。

     Address               Value
      jkel                  25
      jkel                  42
      jkel                  11

我试图找到地址列包含“jekl”的所有行,并使用 index() 函数提取相关值。但不幸的是,我无法弄清楚整个事情。

df = df[df["Address"].str.contains("jekl")]

new_value = []
for row in df:
  idx = df['Address"].index("jekl")
  a = df['Value'][idx]


有人可以帮忙吗?谢谢。

标签: python-3.xpandas

解决方案


尝试分解数据和查询:

pd.DataFrame({'Address': df['Address'].explode().
              'Value': df['Value'].explode()
             }).query('Value=="jkel"')

推荐阅读