簡體   English   中英

如何將 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM