从Pandas Dataframe中选择cell并转换为int

olhwl3o2  于 2023-05-27  发布在  其他
关注(0)|答案(4)|浏览(141)

当从Dataframe中选择单元格时,它返回我的Series值并将其作为系列追加到列表中。如何将单元格转换为单个int值?

df = pd.DataFrame({"name": ['John', 'George', 'Ray'], "score": [123, 321, 112]})

x = df.loc[df['name']=='John', 'score'].reset_index(drop=True)
x.astype(int)
x

list=[]
list.append(x)
list

返回我[0 123 Name:score,dtype:int64],but need just [123]

moiiocjp

moiiocjp1#

这可能会有帮助

import pandas as pd

df = pd.DataFrame({"name": ['John', 'George', 'Ray'], "score": [123, 321, 112]})

x = df.loc[df['name'] == 'John', 'score'].reset_index(drop=True)
x = x.item()  # Convert the Series to a single integer value using .item()
print(x)  # Output: 123

my_list = []
my_list.append(x)
print(my_list)  # Output: [123]
ztigrdn8

ztigrdn82#

发生这种情况是因为通常df["name"] == "John"对于多个行都可能为真。
解决这个问题的一个简单方法是临时将“name”列转换为DataFrame的索引set_index

import pandas as pd

df = pd.DataFrame({"name": ['John', 'George', 'Ray'], "score": [123, 321, 112]})
x = df.set_index("name").loc["John", "score"]

list_ = []
list_.append(x)
print(list_)

附加说明:

  • 如果在“name”列中多次出现“John”,那么这个解决方案会出现与原始代码相同的问题。
  • 根据您的数据模型,通过将set_index移动到您定义DataFrame的行中,将名称永久地用作索引可能是有意义的。
  • 隐藏像list这样的内置名称是不好的做法,因为您以后可能会需要它们。
ejk8hzay

ejk8hzay3#

尝试:

list.append(x[0])

返回:

list
[123]
noj0wjuj

noj0wjuj4#

df = pd.DataFrame({"name": ['John', 'George', 'Ray'], "score": [123, 321, 112]})

x = df.loc[df['name']=='John', 'score'].reset_index(drop=True)

l=[]
l.append(int(x))  # just append int(x)
l
#[123]

相关问题