首页 > 解决方案 > 从熊猫中的列的数组类型中提取值

问题描述

我正在尝试使用 pandas 从 sql 表中提取位置代码/产品代码。该字段是一个数组类型,即它在每一行中有多个值作为列表。我必须从字符串中提取产品/位置代码的值。

这是表格的示例

df.head()
Target_Type Constraints
45          ti_8188,to_8188,r_8188,trad_8188_1,to_9258,ti_9258,r_9258,trad_9258_1   
45          ti_8188,to_8188,r_8188,trad_8188_1,trad_22420_1   
45          ti_8894,trad_8894_0.2

现在我想提取代码的数值。我还想忽略条目中第二个下划线之后的最终浮点值,即忽略 _1、_0.2 等。

这是我想要实现的示例输出。它应该是所有提取值的唯一列表/df 列 -

 Target_Type_45_df.head()
 Constraints
 8188
 9258
 22420
 8894

我以前从未使用过嵌套/数组类型的列。任何帮助,将不胜感激。

标签: pythonpython-3.xpandasdataframetext

解决方案


我认为以下总体策略会很好用(您需要调试):

  1. 定义一个以 arow作为输入的函数(想法是使用 pandas.apply方法广播此函数)。
  2. 在这个函数中,设置my_list = row['Constraints'].
  3. 然后做my_list = my_list.split(',')。现在你有一个没有逗号的列表。
  4. 接下来,用下划线分割,取第二个元素(索引 1),并转换为 int:
numbers = [int(element.split('_')[1]) for element in my_list]
  1. 最后,转换为setreturn set(numbers)

每行的输出将是一个集合 - 只需将所有这些集合合并在一起即可获得最终结果。


推荐阅读