Python 在熊猫中拆分列和命名

Python 在熊猫中拆分列和命名,python,pandas,multiple-columns,Python,Pandas,Multiple Columns,我有一个数据文件,其中包含时间间隔列,如0-10、11-20、21-30….、81-90。 另外还有两列FH和SH 以下示例数据框表示我的部分数据: df = pd.DataFrame() df['Team'] = ['A','B','C'] df['0-10'] = ['4-0','2-2','3-2'] df ['11-20']= ['2-1','2-2','3-0'] df ['21-30'] = ['2-1','1-1','2-2'] df ['FH'] = ['5-3','6-6','

我有一个数据文件,其中包含时间间隔列,如0-10、11-20、21-30….、81-90。 另外还有两列FH和SH 以下示例数据框表示我的部分数据:

df = pd.DataFrame()
df['Team'] = ['A','B','C']
df['0-10'] = ['4-0','2-2','3-2']
df ['11-20']= ['2-1','2-2','3-0']
df ['21-30'] = ['2-1','1-1','2-2']
df ['FH'] = ['5-3','6-6','5-5']
df ['SH'] = ['2-3','3-2','3-3']
我想做的是在时间间隔(0-10,11-20,21-30)下拆分元素 这意味着对于每个时间间隔['0-10']到['0-10F'和'0-10A'],我将有两个不同的列,'0-10F'下的值将是4,对于团队A,'0-10A'将是0, 我将对其他时间间隔“11-20”至“11-20F”和“11-20A”执行相同的操作 我可以为每一列分别编写代码,如下所示:

df ['0-10F'] = df['0-10'].str.split('-').str[0]
df ['0-10A'] = df['0-10'].str.split('-').str[1]
df ['11-20F'] = df['11-20'].str.split('-').str[0]
df ['11-20A'] = df['11-20'].str.split('-').str[1]
df ['21-30F'] = df['21-30'].str.split('-').str[0]
df ['21-30A'] = df['21-30'].str.split('-').str[1]
有没有更好的方法可以用一个泛型代码为所有列编写它。 以下是预期输出:

谢谢

Zep.

用于带有
-
的列名称,按每列循环,并创建带有值的新数据帧,如有必要,将值转换为整数:

for c in df.filter(like='-').columns:
    df[[f'{c}F', f'{c}A']] = df[c].str.split('-', expand=True).astype(int)

print (df)
  Team 0-10 11-20 21-30   FH   SH  0-10F  0-10A  11-20F  11-20A  21-30F  \
0    A  4-0   2-1   2-1  5-3  2-3      4      0       2       1       2   
1    B  2-2   2-2   1-1  6-6  3-2      2      2       2       2       1   
2    C  3-2   3-0   2-2  5-5  3-3      3      2       3       0       2   

   21-30A  
0       1  
1       1  
2       2