gpt4 book ai didi

python - 如何在pandas中将数组列读取为数组而不是字符串

转载 作者:行者123 更新时间:2023-12-01 00:35:13 25 4
gpt4 key购买 nike

我的 csv 文件中有一个列,其值如下:

['类型:CARDINAL,值:50p','类型:CARDINAL,值:10','类型:CARDINAL,值:10']

问题是当我将数据加载到数据框中时,我得到一个字符串而不是一个数组,并且我无法遍历它。

我也尝试过 json.loads() 但问题是有时我有像 ["Type: TIME, Value: last night's"] 这样的值,所以我可以不将 单引号 (') 替换为 双引号 ("),这会阻止 json 解析我的字符串。

知道如何将我的列作为数组读取吗?

最佳答案

使用ast.literal_eval将列表的字符串表示形式转换为列表:

import ast

a = "['Type: CARDINAL, Value: 50p', 'Type: CARDINAL, Value: 10', 'Type: CARDINAL, Value: 10']"
df = pd.DataFrame({'col':[a, a]})

df['col'] = df['col'].apply(ast.literal_eval)
print (df)
col
0 [Type: CARDINAL, Value: 50p, Type: CARDINAL, V...
1 [Type: CARDINAL, Value: 50p, Type: CARDINAL, V...

print (type(df.loc[0, 'col']))
<class 'list'>

编辑:

如果需要查找所有无法转换的值:

a = "['Type: CARDINAL, Value: 50p', 'Type: CARDINAL, Value: 10', 'Type: CARDINAL, Value: 10']"
df = pd.DataFrame({'col':[a, a, 'wrong "']})

def test(x):
try:
return ast.literal_eval(x)
except:
return np.nan

df['new'] = df['col'].apply(test)
print (df)
col \
0 ['Type: CARDINAL, Value: 50p', 'Type: CARDINAL...
1 ['Type: CARDINAL, Value: 50p', 'Type: CARDINAL...
2 wrong "

new
0 [Type: CARDINAL, Value: 50p, Type: CARDINAL, V...
1 [Type: CARDINAL, Value: 50p, Type: CARDINAL, V...
2 NaN

print (df[df['new'].isna()])

col new
2 wrong " NaN

关于python - 如何在pandas中将数组列读取为数组而不是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57841665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com