gpt4 book ai didi

python - 如何从数据框中获取字符串

转载 作者:太空宇宙 更新时间:2023-11-03 14:44:01 27 4
gpt4 key购买 nike

我试图定义一个带有两个参数的函数:df(数据帧)和一个整数(employerID)作为我的参数。此函数将返回雇主的全名。

如果给定的 ID 不属于任何员工,我想返回字符串“UNKNOWN”/如果没有给出中间名,则仅返回“LAST, FIRST”。/如果仅给出中间名首字母,则以“LAST, FIRST M”格式返回全名。中间首字母后跟“.”。

def getFullName(df, int1):
df = pd.read_excel('/home/data/AdventureWorks/Employees.xls')
newdf = df[(df['EmployeeID'] == int1)]
print("'" + newdf['LastName'].item() + "," + " " + newdf['FirstName'].item() + " " + newdf['MiddleName'].item() + "." + "'")

getFullName('df', 110)

我编写了这段代码,但遇到了两个问题:1)如果我不在 df 两边加上引号,它会给我一条错误消息,但我只想将数据帧作为参数而不是字符串。

2) 此代码无法处理没有中间名的人。

很抱歉,我使用 pd.read_excel 读取了您无法访问的 Excel 文件。我知道你很难在没有 Excel 文件的情况下测试代码,如果有人让我知道如何创建带有列名的随机数据框,我会继续更改它。谢谢,

最佳答案

我为此创建了一些虚假数据:

           EmployeeID FirstName LastName MiddleName
0 0 a a a
1 1 b b b
2 2 c c c
3 3 d d d
4 4 e e e
5 5 f f f
6 6 g g g
7 7 h h h
8 8 i i i
9 9 j j None

EmployeeID 9 没有中间名,但其他人都有。我的做法是将逻辑分成两部分。第一个是当您找不到 EmployeeID 时。第二个管理员工姓名的打印。第二部分还应该有两组逻辑,一组用于控制员工是否有中间名,另一组用于控制是否没有中间名。您可能可以将其中的很多内容合并到单行语句中,但您可能会牺牲清晰度。

我还从函数中删除了 pd.read_excel 调用。如果您想将数据帧传递给函数,那么应该在它之外创建数据帧。

def getFullName(df, int1):
newdf = df[(df['EmployeeID'] == int1)]

# if the dataframe is empty, then we can't find the give ID
# otherwise, go ahead and print out the employee's info
if(newdf.empty):
print("UNKNOWN")
return "UNKNOWN"
else:
# all strings will start with the LastName and FirstName
# we will then add the MiddleName if it's present
# and then we can end the string with the final '
s = "'" + newdf['LastName'].item() + ", " +newdf['FirstName'].item()
if (newdf['MiddleName'].item()):
s = s + " " + newdf['MiddleName'].item() + "."
s = s + "'"
print(s)
return s

我有返回值的函数,以防您想进一步操作字符串。但这只是我。

如果运行getFullName(df, 1),您应该得到'b, b b.'。对于 getFullName(df, 9),您应该得到 'j, j'

完整来说,就是:

df = pd.read_excel('/home/data/AdventureWorks/Employees.xls')
getFullName(df, 1) #outputs 'b, b b.'
getFullName(df, 9) #outputs 'j, j'
getFullName(df, 10) #outputs UNKNOWN
<小时/>

虚假数据:

d = {'EmployeeID' : [0,1,2,3,4,5,6,7,8,9],
'FirstName' : ['a','b','c','d','e','f','g','h','i','j'],
'LastName' : ['a','b','c','d','e','f','g','h','i','j'],
'MiddleName' : ['a','b','c','d','e','f','g','h','i',None]}
df = pd.DataFrame(d)

关于python - 如何从数据框中获取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46396492/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com