首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在pandas中拆分列和命名

在pandas中拆分列和命名
EN

Stack Overflow用户
提问于 2019-05-19 22:03:34
回答 1查看 26关注 0票数 1

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

代码语言:javascript
复制
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,'0-10A‘将是0对于团队A,我将对其他时间间隔'11-20’到'11-20F‘和'11-20A’做同样的事情,我可以分别为每个列编写代码,如下所示:

代码语言:javascript
复制
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]

有没有更好的方法来用一个通用代码为所有列编写它。以下是预期输出:

谢谢。

泽普。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-19 22:12:37

对带有-的列名使用DataFrame.filter,按每个列进行循环,并使用Series.str.split创建新的DataFrame,如果需要,还可以将值转换为整数:

代码语言:javascript
复制
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  
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56208553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档