如果多个列名包含相同的字符串,如何对每个列名执行分析



我正在对几个数据帧执行分析。其中一些变量的名称非常相似,例如:

d = {'id': [1, 2, 3], '1-abc': [13, 15, 27], '2-abc': [23, 36, 12]}
df = pd.DataFrame(data=d)

在本例中,我想对quantity列执行特定的分析。当有多个包含'abc'的列时,我想对执行分析。"abc"列。

我已经尝试过df['ABC']= df.loc[:,['abc' in i for i in df.columns]],但这不适用于包含'abc'的多于1列的数据框架

是否有办法创建一个像下面的伪代码一样执行的if-else语句?

for col in df.columns:
if df.columns contains > 1 col containing 'abc':
*perform analysis on 'abc' columns*
else:
continue

您的问题有点宽泛,但是获得列子集的更好方法是df.filter()。然后可以对过滤后的DataFrame的每一列执行分析。

ABC = df.filter(like='abc').columns
for col in ABC:
ANALYZE_ME(df[col]) # Perform analysis on each column

您还可以将两个列打包成一个列表,例如:

df['ABC'] = df.filter(like='abc').apply(list, axis=1)

输出:

id  1-abc  2-abc       ABC
0   1     13     23  [13, 23]
1   2     15     36  [15, 36]
2   3     27     12  [27, 12]

最新更新