python - 使用 Pandas 将列复制到文件时遇到问题

标签 python pandas writefile

代码的目标只是在两列中执行 OHE,并按照原始文件中的方式编写其余列。但是如图所示,Dur 列在写入第二个文件并传递比应有的内容更多的内容时,在某种程度上出现了“错误”。我不想限制该字段,因为原始文件太大,并且可能包含较长和较短字段的行,这可能会使以后的分析变得复杂。

Image of the problem

import pandas as pd
from sklearn.preprocessing import LabelEncoder,OneHotEncoder

def opendataset():
    file = pd.read_csv('originalfiletest.binetflow')
    return file

def writefile():
    df.to_csv('newfiletest.binetflow', columns=['Dur','Proto','State','TotBytes','average_packet_size','average_bits_psecond'], index=False)

def writebackupproto():
    df.to_csv('fieldprotobackup.binetflow', columns=['Proto2','Proto'], index=False)

def writebackupstate():
    df.to_csv('fieldstatebackup.binetflow', columns=['State2','State'], index=False)

df = opendataset()

df['State2'] = df['State']
df['Proto2'] = df['Proto']

le = LabelEncoder()
dfle = df
dfle.State = le.fit_transform(dfle.State)
X = dfle[['State']].values
Y = dfle[['Proto']].values
ohe = OneHotEncoder()
OnehotX = ohe.fit_transform(X).toarray()
OnehotY = ohe.fit_transform(Y).toarray()

dx = pd.DataFrame(data=OnehotX)
dy = pd.DataFrame(data=OnehotY)

dfle['State'] = (dx[dx.columns[0:]].apply(lambda x:''.join(x.dropna().astype(int).astype(str)), axis=1))
dfle['Proto'] = (dy[dy.columns[0:]].apply(lambda y:''.join(y.dropna().astype(int).astype(str)), axis=1))

writefile()
writebackupproto()
writebackupstate()

最佳答案

看起来唯一的错误是您的值没有被截断。您只需将 pandas.Series.apply 方法与“截断 lambda”结合使用即可获得预期结果。

df.Dur = df.Dur.apply(lambda n: '%.6f' % n) 

一个可行的示例可能是截断 pi

from math import pi
non_truncated = pd.Series(10*[pi])
non_truncated.apply(lambda n: '%.2f' % n)

你得到一个被截断的系列

0    3.14
1    3.14
2    3.14
3    3.14
4    3.14
5    3.14
6    3.14
7    3.14
8    3.14
9    3.14
dtype: object

关于python - 使用 Pandas 将列复制到文件时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54961900/

相关文章:

python - Python的搁置模块是否使用内存映射IO?

python - 如何安装ChartDirector?

node.js - node fs.fsync(什么时候使用?)

python - 在 Python 中编码序数值

python - lazylinker_c 导入错误 Theano

python - 从 pandas 数据帧的特定行检索信息

python - 我的数据框有很多(192)列。如何同时选择两列?

python - 根据条件从 DataFrame 中选择行

c - 同时写入和读取文件

C++ windows.h WriteFile 函数