gpt4 book ai didi

python - 根据另一列获取列值,其中包含 pandas 数据框中的字符串列表

转载 作者:太空宇宙 更新时间:2023-11-03 15:40:24 26 4
gpt4 key购买 nike

我尝试了 link .但它不适用于我在下面给出的示例。我尝试了 loc[0] 作为输出。我试过.item()。但这些都没有帮助我。

>>> df2 = pd.DataFrame({ 'Item':['[Phone]', '[Watch]', '[Pen]', '[Pencil]', '[Knife]'], 'RelatedItem': ['[Phone cover]', '[Watch strap]', '[Pen cap]', '[Pencil lead]', '[fork]'], 'CountinInventory':['20','50','40','80','90']})
>>> df2
Item RelatedItem CountinInventory
0 [Phone] [Phone cover] 20
1 [Watch] [Watch strap] 50
2 [Pen] [Pen cap] 40
3 [Pencil] [Pencil lead] 80
4 [Knife] [fork] 90
>>> df2.loc[df2['Item'] == 'Phone', 'RelatedItem']
Series([], Name: RelatedItem, dtype: object)
>>> df2.loc[df2['Item'] == 'Phone', 'RelatedItem', 'CountinInventory']
pandas.core.indexing.IndexingError: Too many indexers

我有这个数据,当我输入 Phone 时,我需要获取 Phone cover 以及 CountinInventory 值作为我的答案。请告知我在这里犯了什么错误。

最佳答案

我相信您需要 str 来删除第一个和最后一个 [] 或使用 str.strip :

mask = df2['Item'].str[1:-1] == 'Phone'
#alternative solution
#mask = df2['Item'].str.strip('[]') == 'Phone'

print (mask)
0 True
1 False
2 False
3 False
4 False
Name: Item, dtype: bool

如果没有缺失值是可能的,请使用列表理解,如果数据量大,速度会更快:

mask = [x[1:-1] == 'Phone'for x in df2['Item']]

mask = [x.strip('[]') == 'Phone'for x in df2['Item']]
print (mask)

[True, False, False, False, False]

最后选择多列使用 list:

df3 = df2.loc[mask, ['RelatedItem', 'CountinInventory']]
print (df3)
RelatedItem CountinInventory
0 [Phone cover] 20

关于python - 根据另一列获取列值,其中包含 pandas 数据框中的字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52738575/

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