【问题标题】:Parent and child with Panda in pythonpython中与熊猫的父子关系
【发布时间】:2020-11-09 07:27:12
【问题描述】:

我有一个超过 10000 行的 csv 文件,现在我想创建一个新列来显示父子之间的依赖关系。基于上述规则和政策,存在如下:

  1. 确定并显示数据与哪个家庭相关的唯一代码团队
  2. 如果 Position 是 C ,则 Parent 字段必须满足其相对位置。李>
  3. 如果 Position 是 PF,则 Child 字段必须用它的位置来满足,但如果有其他位置存在(C 和 PF 除外)它必须满足,因为它也是相对位置。
  4. 存在任何其他职位,孩子必须履行。

CSV 中的现有数据:

Team        Position
Atlanta Hawks   C
Atlanta Hawks   PF
Atlanta Hawks   PG
Atlanta Hawks   SF
Atlanta Hawks   SG

结果:

Parent Child
C         PF
PF        PG
PF        SF
PF        SG

我尝试在这方面与 Panda 合作。下面的代码在第一个条件下运行良好。如果有人帮助我修改此代码,我将不胜感激?

  import pandas as pd
    
    df = pd.read_csv("C:\\Users\\Desktop\\nba.csv")
    
    gdf = df['Team']
    gdf.to_csv('C:\\Users\\Desktop\\nba-dependency.csv')
    for g in gdf:
        df.loc[df['Position']=='C','Parent']=df['Position']
        df.loc[df['Position']=='PF','Parent']=df['Position']
    
    df.to_csv('C:\\Users\\Desktop\\result.csv')

【问题讨论】:

  • 我试图解决这个问题,但发现问题很不清楚,你谈论依赖字段但从未显示实际输出的外观,请为给定数据添加所需的输出,我没有了解“它应该是什么”数据也代表什么,是一些 df 您在这里存储父子元组进行翻译的地方吗?我猜是因为它的行数与您的数据不同
  • 是的,你是对的。我更正了内容。
  • 我在 excel 中有现有数据,我想通过代码和条件将其更改为我在内容中显示的最终结果。
  • 将添加父子标题的2列。如果 position 的值为 C,则父字段将由 C 完成。如果 position 的值为 PF ,则 C 将是父字段,而 PF 将是子字段。如果存在除 C 和 PF 之外的任何其他字段。 PF 将是父项,其他字段将是子项。

标签: python python-3.x pandas dataframe pandas-groupby


【解决方案1】:

如果我理解正确的话,这应该是正确的做法:

import pandas as pd
import numpy as np

data = {"team":["ah","ah","ah","ah","ah"],"position":["C","PF","PG","SF","SG"]}

df = pd.DataFrame(data)

df["Parent"] = ["C" if x=="C" or x=="PF" else "PF" for x in df["position"]]
df["Child"] = df["position"]
print(df)

这里的输出将是

  team position Parent Child
0   ah        C      C     C
1   ah       PF      C    PF
2   ah       PG     PF    PG
3   ah       SF     PF    SF
4   ah       SG     PF    SG

我不完全确定第一行是否如您所愿,您可能想删除该行(您没有在结果中显示它,如果是,则将其删除),其余的看起来像您定义的那样。

【讨论】:

  • 这完全正确,我很感激。但只有一个问题,因为我有大约 10000 行不同的团队,PF 属于 ah 团队,现在如果我在 bh 团队中有 PF,是否可以添加另一列是 team.Parent 和 team,Child 的组合? team.Parent 是 bh.C,team.child 是 bh.PF?
  • 你的意思是像df["combined"] = df["team"]+df["Parent"]+df["Child"]这样的吗?
猜你喜欢
  • 2016-12-03
  • 1970-01-01
  • 1970-01-01
  • 2019-03-31
  • 1970-01-01
  • 2011-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多