gpt4 book ai didi

python - 无法用 pandas 的元组列表中的 0 替换空值

转载 作者:太空宇宙 更新时间:2023-11-03 12:52:36 26 4
gpt4 key购买 nike

我有一个如下所示的数据

data = [[('A', 204.593564568), ('B', 217.421341061), ('C', 237.296250326), ('D', 217.464281998), ('E', 206.329901299)], [('F', 210.297625953), ('G', 228.117692718), ('H', 4), ('I', 265.319671257), ('K',)]]

这只是我提取的一小部分数据。如您所见,K 没有可用的值。所以我认为。也许我可以用 Pandas 来解决这个问题。所以我这样做

import pandas as pd
import numpy as np

df = pd.Dataframe(data).fillna(0)

现在我不能使用 df.fillna(0),因为数据中没有 None

所以我尝试了 df.replace(r'^\s*$', np.nan, regex=True) 这将删除任何带有 None 的空字符串但即使这样也无济于事。

那么我该怎么做才能填补缺失的数据呢?

注意:我不必总是以这种格式接收数据。我也可能以这种格式收到

data = [('F', 210.297625953), ('G', 228.117692718), ('H', 4), ('I', 265.319671257), ('K',)]

我正在寻找的是 pandas 中用于填充缺失值的通用解决方案。

最佳答案

使用 pd.applymap

df.applymap(lambda x: (x[0],0) if len(x) == 1 else x)

                    0                   1                   2  \
0 (A, 204.593564568) (B, 217.421341061) (C, 237.296250326)
1 (F, 210.297625953) (G, 228.117692718) (H, 4)

3 4
0 (D, 217.464281998) (E, 206.329901299)
1 (I, 265.319671257) (K, 0)

备选..自编辑以来

为什么不展平你的元组,见下文(使用 np.flatten )

data = list(np.array(data).flatten()) #since it can be list of list or a list
##data
[('A', 204.593564568),
('B', 217.421341061),
('C', 237.296250326),
('D', 217.464281998),
('E', 206.329901299),
('F', 210.297625953),
('G', 228.117692718),
('H', 4),
('I', 265.319671257),
('K',)]

然后,

pd.DataFrame(data).fillna(0)

   0           1
0 A 204.593565
1 B 217.421341
2 C 237.296250
3 D 217.464282
4 E 206.329901
5 F 210.297626
6 G 228.117693
7 H 4.000000
8 I 265.319671
9 K 0.000000

关于python - 无法用 pandas 的元组列表中的 0 替换空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57739774/

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