![](/img/trans.png)
[英]How to convert a string type column to list type in pandas dataframe?
[英]How to cast a Pandas Dataframe column into 'list' type?
遵循Pandas expand()方法文档,可以将一行中的列表分解为多行:
df = pd.DataFrame({'A': [[1, 2, 3], 'foo', None, [3, 4]], 'B': 1})
df.explode('A')
但是,我从数据库中获取的 DataFrame() 包含被视为字符串的列表:
df = pd.DataFrame({'A': ["[1, 2, 3]", 'foo', None, "[3, 4]"], 'B': 1})
df.explode('A')
# Does not fail, but does not explode "[1, 2, 3]"
在 Pandas 之外,我使用ast.literal_eval()但不知道如何使它适用于我的专栏。
如何将我的 'A' 列转换为列表,以便 expand('A') 工作?
您可以尝试使用DataFrame.apply
:
def f(x):
try:
return ast.literal_eval(x)
except Exception:
return x
df['A']=df['A'].apply(f)
df.explode('A')
A B
0 1 1
0 2 1
0 3 1
1 foo 1
2 None 1
3 3 1
3 4 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.