我想使用查找表(字符串列表)来搜索数据框架列(名称)并返回其他列的行值的时间序列。查找字符串列表不会与name列中的字符串完全匹配,但会包含类似的字符串(以?开头)。
lookup=["AB","AC","AX"]
DF = name year mean upper lower
AB2 2020 4 7 1
AB_7 2021 5 9 2
AC1 2022 3 9 2
AX 2019 4 9 2
返回:
AB.csv
2020 4 7 1
2021 5 9 2
AC.csv
2022 3 9 3
AX.csv
2019 4 9 2
可以使用Pandas过滤器和regex
参数与rf'^{selector}'
。对于每个循环,此regex将只保留模式与索引列(set_index('name')
)中字符串开头的selector
匹配的行(axis=0
)。
import pandas as pd
df = pd.read_csv('sample.csv')
print(df)
lookup=["AB","AC","AX"]
df = df.set_index('name')
for selector in lookup:
filtered_df = df.filter(regex=rf'^{selector}', axis=0)
filtered_df.to_csv(f'{selector}.csv', index=False)
AB.csv
year,mean,upper,lower
2020,4,7,1
2021,5,9,2
AC.csv
year,mean,upper,lower
2022,3,9,2
AX.csv
year,mean,upper,lower
2019,4,9,2