python 有条件地计算列表中的项目

idfiyjo8  于 2022-10-30  发布在  Python
关注(0)|答案(2)|浏览(160)

我准备了以下代码:

data = []
for i in range(4, 8):
    for value in round(df["month"] / 12, 1) #converting months to years
        if value > i:
        data.append(value)

我想做的是计算存储在data列表中大于i的值的数量,然后将此信息存储在一个单独的列表中,这样我就可以创建一个 Dataframe 。
我会得到这样的结果:
| 项目名称|计数|
| - -|- -|
| 4年以上|五十六人|
| 5年以上|四百五十六人|
我尝试使用lambda函数,但似乎不起作用:

data = []
for i in range(4, 8):
    for value in round(df["month"] / 12, 1)
        if value > i:
        data.append(value)
        counts = sum(map(lambda x: if x > i, data)))

我可以在现有代码中添加什么来获得我想要的?

xesrikrc

xesrikrc1#

或者只是

over4=(round(df.month/12)>=4).sum()

注意:有一个很好的经验法则要记住 “如果我在panda行上迭代,我很可能做错了什么”
创建 Dataframe

overs=pd.DataFrame([[f"≥{i}",(round(df.month/12)>=i).sum()] for i in range(4,8)], columns=["Description", "count"])
5hcedyr0

5hcedyr02#

你可以只使用这行代码,但不清楚这是否是你想要的输出,因为我们不能查看数据。

dataFrame = pd.DataFrame(round(df["month"] / 12, 1).value_counts(dropna=True))

或者,您也可以使用此方法获取您提到的表作为 Dataframe

df['foo'] = round(df["month"] / 12, 1)
dataFrame = pd.DataFrame(columns=['Description','Count'])
for i in range(4,8):
    dataFrame.loc[4-i] = [">"+str(i)+" years", (df[df['foo'] > i].foo.count())]

相关问题