Python 如何在Pandas中将字符串自动转换为列表或集合?

Python 如何在Pandas中将字符串自动转换为列表或集合?,python,pandas,dataframe,Python,Pandas,Dataframe,假设我们在熊猫中有这个数据帧。在我的例子中,我得到它是由于aggfunc作为lambda x:x的pivot\u table()的结果,因为list或set没有对这种数据做正确的处理 将熊猫作为pd导入 df=pd.DataFrame( 资料=[ [无,“1,2,3”,无], [“3,4,5”,无,“1,4,5”], [无,“1,3,6”,无], ], 索引=[“YYZ”,“YEG”,“BRU”], 列=[“全日空”、“日航”、“荷航”], ) df 我想对其进行解析,将中间带逗号的字符串更改

假设我们在熊猫中有这个数据帧。在我的例子中,我得到它是由于aggfunc作为
lambda x:x
pivot\u table()
的结果,因为
list
set
没有对这种数据做正确的处理

将熊猫作为pd导入
df=pd.DataFrame(
资料=[
[无,“1,2,3”,无],
[“3,4,5”,无,“1,4,5”],
[无,“1,3,6”,无],
],
索引=[“YYZ”,“YEG”,“BRU”],
列=[“全日空”、“日航”、“荷航”],
)
df
我想对其进行解析,将中间带逗号的字符串更改为集合。我成功地做到了这一点:

df.columns中的列的
:
null=df[column].isnull()
对于df.loc[nulls,column]中的idx。索引:
df.at[idx,column]=set()
对于df.loc[~nulls,column]中的idx。索引:
df.at[idx,column]=set(df.at[idx,column].split(“,”)
df
因此:

        ANA       JAL       KLM
YYZ     {}        {3, 2, 1} {}
YEG     {5, 4, 3} {}        {5, 4, 1}
BRU     {}        {6, 3, 1} {}

熊猫的正确做法是什么?

让我们用
lambda
试试
applymap
lambda
检查是否
None
,然后
split
并转换为
set
,否则返回一个空的
set

编辑:添加了
map()
以将集合项的数据类型从字符串更改为整数

df.applymap(lambda x: set(map(int, x.split(','))) if x is not None else {})

您应该在数据帧中存储标量,而不是顺序!非常感谢。
           ANA        JAL        KLM
YYZ         {}  {2, 1, 3}         {}
YEG  {5, 4, 3}         {}  {1, 4, 5}
BRU         {}  {6, 1, 3}         {}