Python 无法删除数据帧中的部分字符串
我使用KDDCup来训练神经网络,但我对数据的布局感到相当困惑。当我使用scikit学习数据集功能下载数据集时:Python 无法删除数据帧中的部分字符串,python,pandas,Python,Pandas,我使用KDDCup来训练神经网络,但我对数据的布局感到相当困惑。当我使用scikit学习数据集功能下载数据集时: data = datasets.fetch_kddcup99(return_X_y = True, ) df = pd.DataFrame(np.column_stack((data[0], data[1]))) 然后运行命令df.head(),返回以下信息: 0 1 2 3 4 5 ... 36 37 38
data = datasets.fetch_kddcup99(return_X_y = True, )
df = pd.DataFrame(np.column_stack((data[0], data[1])))
然后运行命令df.head(),返回以下信息:
0 1 2 3 4 5 ... 36 37 38 39 40 41
0 0 b'tcp' b'http' b'SF' 181 5450 ... 0 0 0 0 0 b'normal.'
1 0 b'tcp' b'http' b'SF' 239 486 ... 0 0 0 0 0 b'normal.'
2 0 b'tcp' b'http' b'SF' 235 1337 ... 0 0 0 0 0 b'normal.'
3 0 b'tcp' b'http' b'SF' 219 1337 ... 0 0 0 0 0 b'normal.'
4 0 b'tcp' b'http' b'SF' 217 2032 ... 0 0 0 0 0 b'normal.'
[5 rows x 42 columns]
我试图将输出类(元素41)更改为二进制,具体取决于标签是什么(如果正常,则为0,否则为1)。现在证明这很困难,因为数据类型是object,每当我执行df.str.contains
,它都会将所有样本(50万个)转换为NaN
我原以为解决这个问题的一个办法是什么都不做来取代b'
,但我无法成功地做到这一点
我有点困惑于如何操作这个数据帧,其中所有列都是类型
Object
,甚至是标量值。可以使用编码来移动字符
Python 2中忽略了前缀“b”或“b”;它表示在Python3中,文本应该变成字节文本(例如,当代码自动转换为2to3时)。“u”或“b”前缀后面可以跟“r”前缀
b
是第41列字符串的一部分吗?是的,b似乎在每个字符串文本的前面,然后将数据类型转换为“Object”。好的,我明白了。我可以运行df[41].apply(lambda x:x.decode('utf-8'),这样可以正确地将数据显示为正常数据。我可以调整您的答案并删除所有字节文字,方法是首先定义所有包含它们的列,然后循环使用它们并应用decode函数。然后,我通过重试str.contains
函数来测试结果,该函数正确地将我的输出列行设置为1和0。谢谢你的帮助。欢迎:-)@JohnathanBrown
stri="Response from server"
c.send(stri.encode())
df[41].apply(lambda x: x.decode('utf-8'))