在列表中分解列表

2024-09-28 23:32:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Joopter笔记本,包含一个熊猫数据文件,带有一个Par(dType = OBJ)。

+------+------------------+
|      | PAR              |
+------+------------------+
| 0    | [[1.2.3, 2.3.4]] |
+------+------------------+
| 1    | [[3.2, 3.2]]     |
+------+------------------+

我不明白如何将每行中的每一个[[list]]都“清理”成类似于[list]的东西

我可以打印行内容:

print(df['PAR'][1])
print(', '.join(df['PAR'][1][0]))

这将产生:

[['3.2', '3.2']] 
3.2, 3.2

我还可以将每个单元格“剥离”为一个字符串:

# df['PAR'] = df['PAR'].astype(str)
df['PAR'].replace(r'\[','', regex=True, inplace=True) 
df['PAR'].replace(r'\]','', regex=True, inplace=True) 
df['PAR'].replace(r'\'','', regex=True, inplace=True)

这提供了一个干净的字符串,尽管这不是我需要的格式:

3.2, 3.2

但是,我想要的是df的每一行中都有一个1级列表,如下所示:

+------+------------------+------------------+
|      | PAR              | PAR list         |
+------+------------------+------------------+
| 0    | [[1.2.3, 2.3.4]] | [1.2.3, 2.3.4]   |
+------+------------------+------------------+
| 1    | [[3.2, 3.2]]     | [3.2, 3.2]       |
+------+------------------+------------------+

(逗号和第n个元素之间的空格只是为了更好地阅读上表)

这样做的常见方法是什么

我的下一步是按照以下思路将每个新列表转换为仅包含唯一元素的列表: Get unique values from a list in python

mylist = ['nowplaying', 'PBS', 'PBS', 'nowplaying', 'job', 'debate', 'thenandnow']
myset = set(mylist)
mynewlist = list(myset)

因此,如果能帮我“取消”每行的列表,我将不胜感激。使用lambda函数(.map of.join?)的解决方案对我来说很容易处理


Tags: 字符串true元素df列表replacelistregex
2条回答

输入数据:

>>> df
                PAR
0  [[1.2.3, 2.3.4]]
1      [[3.2, 3.2]]

一步取消列表*并删除重复项:

df["PAR"] = df["PAR"].str[0].apply(np.unique)

输出数据:

>>> df
              PAR
0  [1.2.3, 2.3.4]
1           [3.2]

*在@SeanBean的帮助下更正

只需使用.str[0]访问外部列表的第一个也是唯一一个元素,就可以有效地删除一个级别的列表,如下所示:

df['PAR list'] = df['PAR'].str[0]

测试数据准备:

data = {'PAR': [
[['1.2.3', '2.3.4']],
[['3.2', '3.2']]]
}
df = pd.DataFrame(data)

print(df)

                PAR
0  [[1.2.3, 2.3.4]]
1      [[3.2, 3.2]]

运行新代码:

 df['PAR list'] = df['PAR'].str[0]

结果:

print(df)

                PAR        PAR list
0  [[1.2.3, 2.3.4]]  [1.2.3, 2.3.4]
1      [[3.2, 3.2]]      [3.2, 3.2]

相关问题 更多 >