Running pandas 1.5.3. Also attempted on pandas 2.2.1.

我正在从CSV加载数据,如下所示:

888|0|TEST ACCOUNT
888|1|Sample Ship-to
802001|0|COMPANY 1
802001|1|COMPANY 1 INC
802001|2|COMPANY 1 BALL
K802001|3|COMPANY 1

CUSNOS2NAME,按该顺序排列.

我有一个脚本,它加载数据,然后判断第一列,并确保它在结果DataFrame中为int64.如果没有,脚本应该将列转换为数字,并删除其中包含NaN的行.

所以,之前:

     CUSNO  S2            NAME
0      888   0    TEST ACCOUNT
1      888   1  Sample Ship-to
2   802001   0       COMPANY 1
3   802001   1   COMPANY 1 INC
4   802001   2  COMPANY 1 BALL
5  K802001   3       COMPANY 1

然后运行:

cl['CUSNO'] = pd.to_numeric(cl.CUSNO, errors='coerce')
cl = cl.dropna(axis='index', how='any')

之后:

      CUSNO  S2            NAME
0     888.0   0    TEST ACCOUNT
1     888.0   1  Sample Ship-to
2  802001.0   0       COMPANY 1
3  802001.0   1   COMPANY 1 INC
4  802001.0   2  COMPANY 1 BALL

我想让CUSNO成为一列满int64或类似类型,但当我运行company_locations['CUSNO'].dtype时,它会继续返回float64.(实际上,我想go 掉CUSNO中每个条目末尾的小数点,我认为排版到int或类似的方式效果最好.

我try 了一些解决方案,即:

cl['CUSNO'] = pd.to_numeric(cl.CUSNO, errors='coerce').dropna().astype(int) # replacing the earlier line 1 of the script
cl['CUSNO'] = cl.astype({'CUSNO': 'int'})
cl['CUSNO'] = cl['CUSNO'].apply(pd.to_numeric, errors='coerce')

对于上面脚本中的第二行,我已经try 了inplace=True.我还try 了pandas: to_numeric for multiple columnsChange column type in pandasPython - pandas column type casting with "astype" is not working的解决方案.

也许我漏掉了什么?我是否必须将新的DataFrame复制到一个新的变量或其他东西?

推荐答案

我认为很简单(在放弃NaNs后):

df["CUSNO"] = df["CUSNO"].astype(int)
print(df)

打印:

    CUSNO  S2            NAME
0     888   0    TEST ACCOUNT
1     888   1  Sample Ship-to
2  802001   0       COMPANY 1
3  802001   1   COMPANY 1 INC
4  802001   2  COMPANY 1 BALL

Python相关问答推荐

仅从风格中获取 colored颜色 循环

SQLGory-file包FilField不允许提供自定义文件名,自动将文件保存为未命名

如何让剧作家等待Python中出现特定cookie(然后返回它)?

Pandas 都是(),但有一个门槛

avxspan与pandas period_range

如何创建一个缓冲区周围的一行与manim?

从一个系列创建一个Dataframe,特别是如何重命名其中的列(例如:使用NAs/NaN)

Pandas计数符合某些条件的特定列的数量

如何并行化/加速并行numba代码?

Python逻辑操作作为Pandas中的条件

如何在Python中使用另一个数据框更改列值(列表)

在Python中使用if else或使用regex将二进制数据如111转换为001""

python中csv. Dictreader. fieldname的类型是什么?'

巨 Python :逆向猜谜游戏

如何在Python请求中组合多个适配器?

GPT python SDK引入了大量开销/错误超时

如何在python tkinter中绑定键盘上的另一个回车?

遍历列表列表,然后创建数据帧

在Pandas 中以十六进制显示/打印列?

如何使用count()获取特定日期之间的项目