【发布时间】:2022-01-10 19:10:24
【问题描述】:
我正试图让我的数据框从此开始:
my_list list_length
[nan,1,2,3] 4
[1,2,nan,3,4,5] 6
[1,nan] 2
到这里:
my_list list_length
[nan,1,2,3,pad,pad,pad] 6
[1,2,nan,3,4,5] 6
[1,nan,pad,pad,pad,pad] 6
基本上,我需要填充数据框中的列表,以便它们都与最长的列表一样长。
我试过了:
def pad(some_list, target_len):
aux = ['pad']*(target_len - len(some_list))
some_list.extend(aux)
return some_list
for i in df["audio_data"]:
pad(i,6)
但我意识到我的问题是并非所有值都是数字。现在我正试图弄清楚如何去做。我的第一个想法是将所有 nan 值更改为 0。所以我尝试了以下代码:
for row in df["audio_data"]:
for i in row:
if i =='nan':
i==0
但这并没有将任何 nan 值更改为 0。因此,如果这是前进的最佳方式,我该怎么做?我还担心如果我将所有 nan 值更改为 0,我需要用字符串填充。在我的实际数据框中,有很多不同的数字,我无法选择一个数字来表示填充。如果我尝试使用仅包含整数的列表中的字符串填充列表,我会遇到类似的问题吗?
我只需要一些方法来指示空值的位置,然后填充字符串以使它们都具有相同的长度。我到底用什么来表示 nan 值和填充并不重要。
【问题讨论】:
-
如果不是所有的值都是数字,为什么这很重要?你用一个字符串填充。
nan是一个 numpy 数据类型 -
我不确定它为什么重要。它一直给我这个错误: AttributeError: 'str' object has no attribute 'extend' 虽然我不认为 nan 是一个字符串,但我不知道该错误还指的是什么。任何列表中都没有字符串值。
标签: python arrays list dataframe