Python 如何在Pandas中将字符串自动转换为列表或集合?
假设我们在熊猫中有这个数据帧。在我的例子中,我得到它是由于aggfunc作为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 我想对其进行解析,将中间带逗号的字符串更改
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} {}