[英]Automatically create multiple python datasets based on column names
我有一个巨大的数据集,其中包含:“ Eas_1
”、“ Eas_2
”等列到“ Eas_40
”和“ Nor_1
”到“ Nor_40
”。 我想自动创建多个单独的数据集,这些数据集包含以相同数字结尾的所有列(按列名编号分组)和粘贴为新列( Bin
)中的值的列号。
我的数据框:
df = pd.DataFrame({
"Eas_1": [3, 4, 9, 1],
"Eas_2": [4, 5, 10, 2],
"Nor_1": [9, 7, 9, 2],
"Nor_2": [10, 8, 10, 3],
"Error_1": [2, 5, 1, 6],
"Error_2": [5, 0, 3, 2],
})
我不知道如何创建Bin
列并粘贴列名值,但我可以像这样手动分离数据集:
df1 = df.filter(regex='_1')
df2 = df.filter(regex='_2')
这对我来说需要付出很多努力,而且每次获得新数据时都必须更改脚本。 这就是我想象的最终结果:
df1 = pd.DataFrame({
"Eas_1": [3, 4, 9, 1],
"Nor_1": [9, 7, 9, 2],
"Error_1": [2, 5, 1, 6],
"Bin": [1, 1, 1, 1],
})
提前致谢!
您可以使用.str.extract
提取后缀,然后对其进行 groupby :
suffixes = df.columns.str.extract('(\d+)$', expand=False)
for label, data in df.groupby(suffixes, axis=1):
print('-'*10, label, '-'*10)
print(data)
注意要收集您的数据框,您可以执行以下操作:
dfs = [data for _, data in df.groupby(suffixes, axis=1)]
# access the second dataframe
dfs[1]
Output:
---------- 1 ----------
Eas_1 Nor_1 Error_1
0 3 9 2
1 4 7 5
2 9 9 1
3 1 2 6
---------- 2 ----------
Eas_2 Nor_2 Error_2
0 4 10 5
1 5 8 0
2 10 10 3
3 2 3 2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.