Python 在熊猫中拆分列和命名
我有一个数据文件,其中包含时间间隔列,如0-10、11-20、21-30….、81-90。 另外还有两列FH和SH 以下示例数据框表示我的部分数据: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','
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