gpt4 book ai didi

python - 如何计算另一个列表中的列表(作为 Pandas 列)中匹配元素的数量

转载 作者:行者123 更新时间:2023-12-04 10:43:58 26 4
gpt4 key购买 nike

经过多次失败的尝试,我寻求帮助来解决这个问题。说,我有一个 list
target = [1990, 1991, 1992, 1993, 1994]
和一个数据框 stnYrs作为

STATION        YEARS
A [1990,1994,1995,1996,1998,2000]
B [1992,1995,2001]
C [1988,1989]

我想新建一个专栏 NYEARstnYrs ,作为 YEARS 列中匹配的年份数在 target 中找到.这样做的pythonic方法是什么?
结果应该是这样的
STATION        YEARS                           NYEAR
A [1990,1994,1995,1996,1998,2000] 2
B [1992,1995,2001] 1
C [1988,1989] 0

编辑 1 -

我尝试了 Chris 和 YO 建议的方法。如果我使用 target 的测试示例,两者都有效和 stnYrs .但是,在我的实际应用中,两者都没有给出正确的答案。对于 NYEAR,我总是得到零.我只是不知道为什么。这是我的代码中的几行:
stnYrs = pd.read_csv('isd_stnNyr_duOnly.txt',dtype={'STATION':'str'})
periods = [(1971,1980),(1981,1990),(1991,2000),(2001,2010)]
for iperd, perd in enumerate(periods):
ybgn, yend = perd
target = list(range(ybgn,yend+1))
stnYrs['NYEAR'] = stnYrs['YEARS'].apply(lambda x: sum(1 for yr in x if yr in target))
...
stnYrs[['STATION','YEARS','NYEAR']].head()

STATION YEARS NYEAR
0 78982099999 [1959, 1960, 1974, 1975, 1976...] 0

1 69205499999 na 0

2 40941099999 [1976, 1977, 1978] 0

3 40942099999 [1976, 1977, 1978, 1979, 1980...] 0


isd_stnNyr_duOnly.txt文件看起来像

STATION,COUNTRY,GROUP,SOURCE,LAT,LON,ELEVATION,YEARS 78982099999,AA,SAM,4,12.501,-70.015,18.28,"[1959, 1960, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1993, 1997, 1998, 1999, 2000, 2001, 2004, 2008]"

69205499999,AF,SAS,4,32.8,67.633,1989.0,na

40941099999,AF,SAS,4,34.883,65.3,2070.0,"[1976, 1977, 1978]"

40942099999,AF,SAS,4,33.533,65.267,2183.0,"[1976, 1977, 1978, 1979, 1980, 1981, 1983, 1984, 2010, 2019]"



编辑 2-

我终于想出了如何转换 YEARS要列出的列。
def clean(seq_string):
return list(map(int, seq_string.strip("[]").split(',')))
stnrec = pd.read_csv('isd_stnNyr_duOnly.txt',dtype={'STATION':'str'},converters={'YEARS': clean})

最佳答案

让我们做

stnYrs['NYEAR']=pd.DataFrame(stnYrs["YEARS"].tolist()).isin(target).sum(1).values

关于python - 如何计算另一个列表中的列表(作为 Pandas 列)中匹配元素的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59797192/

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