[英]How to replace empty string in python
我有一个csv文件,并将其读入数组,原始csv是一个5行8列的文件,其中包含空元素
1 2 3 4 5 6 7 8
Row 1: '1 1' '4 4' '2 2'
Row 2: '3' '3' '3'
Row 3: '1 1 1 1' '1 1 1 1' '2 2 2 2'
Row 4: '2' '4' '2'
Row 5: '4' '4' '4'
我将其读入我的代码中:
[[nan '1 1' '4 4' nan nan nan '2 2' nan]
[nan '3' '3' nan nan nan '3' nan]
[nan '1 1 1 1' '1 1 1 1' nan nan nan '2 2 2 2' nan]
[nan '2' '4' nan nan nan '2' nan]
[nan '4' '4' nan nan nan nan '4']]
所以我想要得到的是用其他元素将所有空元素替换为相同数量的-1
:
[['-1 -1' '1 1' '4 4' '-1 -1' '-1 -1' '-1 -1' '2 2' '-1 -1']
['-1' '3' '3' '-1' '-1' '-1' '3' '-1']
['-1 -1 -1 -1' '1 1 1 1' '1 1 1 1' '-1 -1 -1 -1' '-1 -1 -1 -1' '-1 -1 -1 -1' '2 2 2 2' '-1 -1 -1 -1']
['-1' '2' '4' '-1' '-1' '-1' '2' '-1']
['-1' '4' '4' '-1' '-1' '-1' '-1' '4']]
当我使用re.match("\\d",element)
,无法获得结果。 有人可以帮忙吗?
关于什么 :
for line in csvdata:
multiplicity = max([len(datum.split(" ")) if isinstance(datum, str) else 0 for datum in line])
for datum in line:
if(not isinstance(datum, str)):
datum = " ".join(["-1"]*multiplicity)
在我看来,这很糟糕,但应该可以。
尝试这个:
xs=[["nan '1 1' '4 4' nan nan nan '2 2' nan"],
["nan '3' '3' nan nan nan '3' nan"],
["nan '1 1 1 1' '1 1 1 1' nan nan nan '2 2 2 2' nan"],
["nan '2' '4' nan nan nan '2' nan"],
["nan '4' '4' nan nan nan nan '4'"]]
for x in xs:
s = len(x[0].replace('nan','').replace(' ','').split("''")[0])-1
r = ' '.join('v'*s).replace('v', '-1')
r = "'%s'" % r
x[0] = x[0].replace('nan', r)
我相信您应该在问题中明确说明您正在使用库(numPy)。 大多数解决方案都适用于Python,但是由于您已经在使用numpy,因此我相信这是一个更好的解决方案
x = np.asarray(pd.read_csv("data/org8.csv"))
x[np.isnan(x)] = -1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.