Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 比较数据帧中不工作的字符串?_String_Pandas_Dataframe_Encoding_Byte - Fatal编程技术网

String 比较数据帧中不工作的字符串?

String 比较数据帧中不工作的字符串?,string,pandas,dataframe,encoding,byte,String,Pandas,Dataframe,Encoding,Byte,我正在根据字符串比较为我的df(导入的CSV文件)制作一个掩码,但似乎.contains有效,但==无效 此掩码使用。包含: mask=(y_train['SEPSISPATOS'].str.contains('Yes'))(y_train['SEPSHOCKPATOS'].str.contains('Yes'))(y_train['OTHSYSEP'].str.contains('Sepsis'))(y_train['othshock'].str contains('Septic休克'))

我正在根据字符串比较为我的df(导入的CSV文件)制作一个掩码,但似乎
.contains
有效,但
==
无效

此掩码使用
。包含

mask=(y_train['SEPSISPATOS'].str.contains('Yes'))(y_train['SEPSHOCKPATOS'].str.contains('Yes'))(y_train['OTHSYSEP'].str.contains('Sepsis'))(y_train['othshock'].str contains('Septic休克'))
返回此输出(注意最后一行):

SEPSISPATOS SEPSHOCKPATOS OTHSYSEP othshock SEPSISPATOS
b'No'b'No'b'无并发症'b'无并发症'0
b'No'b'No'b'无并发症'b'无并发症'0
b'No'b'No'b'无并发症'b'无并发症'0
“没有”没有“没有”并发症“感染性休克”1
而另一种掩模则采用直接比较法

mask=(y_train['SEPSISPATOS']='Yes')(y_train['SEPSHOCKPATOS']='Yes')(y_train['OTHSYSEP']='Sepsis')|(y_train['othsheshock']='Septic Shock'))
返回:

SEPSISPATOS SEPSHOCKPATOS OTHSYSEP othshock SEPSISPATOS
b'No'b'No'b'无并发症'b'无并发症'0
b'No'b'No'b'无并发症'b'无并发症'0
b'No'b'No'b'无并发症'b'无并发症'0
b'No'b'No'b'无并发症b'感染性休克'0
不知道我是否有字节的字符串而不是Python3Unicode字符串,我尝试了解码(如下)。我也试过
.str.strip()
。两者都不起作用。我需要一个修复程序,使我能够对任何包含文本的列使用字符串之间的直接比较

编辑re:utf-8解码

NSQIPdf\u train=pd.read\u csv(“acs\u nsqip\u puf13\u 2.csv”)
str_df=df。选择数据类型([np.object])
str_df=str_df.stack().str.decode('utf-8').unstack()
对于str_df中的col:
NSQIPdf_列[col]=str_df[col]
y_train=NSQIPdf_train.loc[:,('SEPSISPATOS','SEPSHOCKPATOS','OTHSYSEP','othshock')]
这进一步加剧了我的问题。。。当输出变为:

SEPSISPATOS SEPSHOCKPATOS OTHSYSEP othshock SEPSISPATOS
楠楠0
楠楠0
楠楠0
楠楠0
在进行比较之前,请使用
.str.decode('utf-8')
将字节值转换为字符串(请参见此):

注意:我猜
.str.contains
会在引擎盖下进行转换。

在进行比较之前,使用
.str.decode('utf-8')
将字节值转换为字符串(请参见此):


注:我猜
.str.contains
在引擎盖下进行转换。

我是熊猫的新手,但可能
str.fullmatch
有帮助-更严格版本的
str.contains
匹配整个字符串,因此

y_train['SEPSHOCKPATOS'].str.fullmatch('Yes')

虽然请注意,这实际上是在检查正则表达式,但请注意您使用的字符串是否包含任何特殊字符。

我是Pandas的新手,但可能
str.fullmatch
有帮助-更严格版本的
str.contains
匹配整个字符串,因此

y_train['SEPSHOCKPATOS'].str.fullmatch('Yes')

请注意,这实际上是针对正则表达式进行检查,因此请注意您使用的字符串是否包含任何特殊字符。

y_train['SEPSHOCKPATOS'].str.=('Yes')
不是有效的Python语法。此外,
'Yes'
周围的括号是一个字符。
.str
是一个访问器,所以
y_train['SEPSHOCKPATOS'].str='Yes'
没有做你认为它做的事情(试着打印
y_train['SEPSHOCKPATOS'].str
)谢谢你,我已经做了这些更改并更新了原始帖子中的代码(第三块)以反映这一点,但是y_train['SEPSISPATOS']='Yes'似乎也不起作用。与之前相同的输出。
.str.decode('utf-9')
应该是utf-8
y_train['SEPSHOCKPATOS']。str.==('Yes')
不是有效的Python语法此外,
'Yes'
周围的括号是一个分心符,
.str
是一个访问器,因此
y_train['SEPSHOCKPATOS'].str=='Yes'
没有做你认为它会做的事情(试着打印
y_train['SEPSHOCKPATOS'].str
)谢谢你,我已经做了这些更改并更新了原始帖子中的代码(第三块)来反映它,但是y_train['sepsipatos']=='Yes'似乎也不起作用。与之前相同的输出。
.str.decode('utf-9')
应该是utf-8I尝试了两个y_序列['SEPSHOCKPATOS']。str.decode('utf-8')=='Yes',结果与之前相同。基于您建议中的链接,我还尝试了预先解码整个df,这实际上导致了更多的问题。打印出y_train['SEPSHOCKPATOS'].str.decode('utf-8')给了我NaNs。我尝试了两个y_train['SEPSHOCKPATOS'].str.decode('utf-8')=='Yes',结果与之前相同。基于您建议中的链接,我还尝试了预先解码整个df,这实际上导致了更多的问题。打印出y_train['SEPSHOCKPATOS'].str.decode('utf-8')会让我感到不安。