pandas 在Python中为列中的每一行添加一个

xam8gpfp  于 2023-03-16  发布在  Python
关注(0)|答案(2)|浏览(176)

我确信这是一个简单的解决方法,但我就是想不出来。我有一个excel工作表,我正在尝试操作python,我想在一个特定的列中的每一行加1。唯一的问题是,该列是一个对象,所以我认为这阻碍了我向它添加内容。以下是我想到的方法:

FV_Absence = FV_Absence["Previous Letter Count"] + 1

当我运行这个程序时,我收到错误消息“TypeError:只能将字符串(而不是“int”)连接到字符串”。
数据如下所示:

Student Number     Previous Letter Count
3243                -
3423                -
2311                1.0

另外,我需要考虑到有一些空值的事实,我正试图删除尾随的零。任何帮助将不胜感激。

zbdgwd5y

zbdgwd5y1#

我没有要测试的 Dataframe ,但是您可以将列的数据类型转换为整数,如下所示:第一:

FV_Absence.replace('-', 0, inplace=True)

然后:

# Convert single column to int dtype.
FV_Absence['Previous Letter Count'] = FV_Absence['Previous Letter Count'].astype('int')

在此之后,您可以将1添加到列中,就像它是整数一样。

cetgtptt

cetgtptt2#

可以使用pd.to_numeric将序列转换为数字,将非数字值强制转换为NaN

import numpy as np
import pandas as pd

# for repeatability
np.random.seed(0)

df = pd.DataFrame({"col0": np.random.randint(0, 10, size=(5,))})

# make 2 random values a hyphen ("-")
df.loc[df.col0.sample(2).index, "col0"] = "-"

print(df)
col0
0    -
1    0
2    -
3    3
4    7
# has dtype "object"
df.col0.dtype
dtype('O')
# convert to numeric, coercing non-numeric values to NaN
df["col0"] = pd.to_numeric(df.col0, errors="coerce")
# hyphens were converted to NaN
print(df.col0)
0    NaN
1    0.0
2    NaN
3    3.0
4    7.0
Name: col0, dtype: float64
# add 1 to the columns
print(df.col0.add(1))
0    NaN
1    1.0
2    NaN
3    4.0
4    8.0
Name: col0, dtype: float64

相关问题