gpt4 book ai didi

python - 根据满足条件求两点之间的厚度

转载 作者:行者123 更新时间:2023-12-01 07:10:49 25 4
gpt4 key购买 nike

我有一个包含表面和深度列表的数据框。一些表面标有后缀 _top 和 _base。

如何编写一个函数来创建一个列,该列仅计算具有 _top 和 _base 后缀的同名表面的厚度(例如 red_top - red_base = 厚度)?

示例:

df = pd.DataFrame({'Surface': ['red_top', 'red_base',
'blue_top', 'blue_base', 'green_top', 'pink'],
'Depth':[2, 6, 12, 45, 55, 145]})

我尝试拆分表面列,为表面创建一个,为顶部/底部创建一个,但我不确定这是否有必要,并且仍然坚持如何根据满足这些要求来计算厚度状况。

非常感谢

最佳答案

我首先将“表面”列分成两部分 - “颜色”和“级别”,然后按“颜色”旋转表格,然后按如下方式计算厚度

split = df.Surface.str.split("_", expand=True)
split.columns = ["Color", "Level"]

df = pd.concat([df, split], axis=1)

df_pivoted = df.pivot(index="Color", columns="Level", values="Depth")
df_pivoted["Thinkness"] = df_pivoted.base - df_pivoted.top

您的示例的 df_pivoted 看起来像这样 -

Level   NaN     base    top Thinkness
Color
blue NaN 45.0 12.0 33.0
green NaN NaN 55.0 NaN
pink 145.0 NaN NaN NaN
red NaN 6.0 2.0 4.0

NaN 列对于不带下标的表面具有非空值。

下面的行仅针对同时具有 _top 和 _base 的数据提供厚度计算,

thickness = (df_pivoted.base-df_pivoted.top).dropna()
print(thickness)

结果

Color
blue 33.0
red 4.0
dtype: float64

关于python - 根据满足条件求两点之间的厚度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58226557/

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