如果行中的字符串缺少语法或语法不正确,我希望找到该行并编辑/更正该语法,以便进行排序。
到目前为止,我想出的是:
df.loc[~df['Syntax'].str.contains('x')] = '1x'+ df['Syntax'].astype(str)
提供错误:
ValueError: Must have equal len keys and value when setting with an iterable
df = pd.read_excel('raw_data')
df.loc[~df['Syntax'].str.contains('x')] = '1x'+ df['Syntax'].astype(str)
df.sort_values('Syntax', inplace = True)
print (df)
第3项是典型的语法错误:
Item Syntax Date
1 1x12 5/14/2019
2 4x16 5/14/2019
3 32 5/14/2019
4 3x10 5/14/2019
我想要的是找到那些只有数字的,并在它前面加上"1x“。输出将如下所示:
Item Syntax Date
1 1x12 5/14/2019
2 4x16 5/14/2019
3 1x32 5/14/2019
4 3x10 5/14/2019
发布于 2019-05-15 02:39:25
在str.contains
中使用np.where
df.Syntax=np.where(df.Syntax.str.contains('x'),df.Syntax,'1x'+df.Syntax)
df
Out[48]:
Item Syntax Date
0 1 1x12 5/14/2019
1 2 4x16 5/14/2019
2 3 1x32 5/14/2019
3 4 3x10 5/14/2019
发布于 2019-05-15 03:08:34
使用update
和isnumeric
怎么样?
df.update('1x' + df.Syntax[df.Syntax.str.isnumeric()])
Out[1460]:
Item Syntax Date
0 1 1x12 5/14/2019
1 2 4x16 5/14/2019
2 3 1x32 5/14/2019
3 4 3x10 5/14/2019
https://stackoverflow.com/questions/56136557
复制相似问题