我们具有格式为“ aa-bb-cccccccc/yyyy/xx@ddddddddd.ee”的单元格,其中xx是格式(A0-Z9)的标题,而yyyy是格式(0001-9999)的数字。我们想要找到xx ='X1'的单元格的yyyy平均值。该表很大,因此遍历每个单元似乎有问题。我可以在这里使用某种方式的函数filter(like ='X1')吗,在满足此条件的情况下我很难找到一种提取yyyy的方法。
import pandas as pd
df = pd.read_csv("dane.csv", sep=';')
shape = list(df.shape)
for i in range(0,shape[1]):
if df.iloc[:,i].filter(like='X1')
输入示例,第一行是列名。
1: Brandenburg (Post-Panamax) 2: Acheron (Feeder)
ES-NL-10633096/1938/X1@hkzydbezon.dk/6749 DE-JP-20438082/2066/A2@qwinfhcaer.cu/68849
BE-BR-61613986/3551/B1@oqk.bf/39927 NL-LK-02275406/2136/A1@ozmmfdpfts.de/73198
PH-SA-39552610/2436/A1@venagi.hr/80578
PA-AE-59814691/4881/X1@zhicvzvksl.cl/25247 OM-PH-31303222/3671/Z1@jtqy.ml/52408
答案 0 :(得分:1)
据我了解,您想为所有单元格计算一个平均值 符合条件,无论其在何处。
从 import re 开始。
然后编译正则表达式:
pat = re.compile(r'(?:[A-Z]{2}-){2}\d+/(?P<n>\d+)/X1@[A-Z]+\.[A-Z]{2}',
flags=re.I)
结果可以用以下一线计算:
pd.Series(df.values.reshape(-1, 1).squeeze()).str.extract(pat)\
.dropna().astype(int).n.mean()
对于您的样本数据,结果为 3409.5 。
要熟悉计算方式,请执行每个步骤 作为单独的说明,并观察结果。