gpt4 book ai didi

python - 有没有办法根据类型替换 Pandas 中的单元格?

转载 作者:行者123 更新时间:2023-12-05 02:45:41 28 4
gpt4 key购买 nike

我有一个来自 Pandas 的 DataFrame,我想将其插入到 sqlite 数据库中。我使用的数据框有时在单元格中有列表。例如:

df = pd.DataFrame({'a': [1, 2],'b': [1, [5,"name"]], 'c': [1.0, 2.0]})

输出

    a   b   c
0 1 1 1.0
1 2 [5,"name"] 2.0

这些列表通常包含数据库不支持的字典,并在插入时抛出错误。

Exception has occurred: InterfaceError
Error binding parameter 1 - probably unsupported type.

有问题的单元格可能是字典或空括号,但当通过 .iloc 单独选择时,它们的类始终是一个列表。有没有一种方法可以用 Null 值、空字符串或空列表替换我的 DataFrame 中的所有列表,而无需遍历所有行和列?

我曾尝试使用 .replace、.loc 和 .eq 等,但都没有成功。问题是我发现的每个例子都是基于数学条件,例如< >,并且我无法通过我正在使用的类型的比较得到相同的结果。

例如:

df.loc[df["b"]==1] = 5

输出

    a   b   c
0 1 1 1.0
1 2 [5,"name"] 2.0

但是

df.loc[type(df["b"])==list] = "NULL"

输出:

KeyError: 'cannot use a single bool to index into setitem'

我是 Pandas 的新手,所以任何建议将不胜感激

最佳答案

尝试applymap然后np.where:

# lambda x: type(x)==list
# would also work
df[:] = np.where(df.applymap(lambda x: isinstance(x, list)), 'NULL', df)

输出:

   a     b    c
0 1 1 1.0
1 2 NULL 2.0

关于python - 有没有办法根据类型替换 Pandas 中的单元格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65818266/

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