首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过在另一列中选择字符串的一部分,在Pandas中创建新列

通过在另一列中选择字符串的一部分,在Pandas中创建新列
EN

Stack Overflow用户
提问于 2016-10-27 17:43:21
回答 2查看 2.3K关注 0票数 1

我在Matlab中有很多编程经验,现在我使用Python,而我只是不让它工作.我有一个dataframe,它包含一个列,列的时间序列类似于00:00:00.033。

代码语言:javascript
复制
timecodes = ['00:00:01.001', '00:00:03.201', '00:00:09.231', '00:00:11.301', '00:00:20.601', '00:00:31.231', '00:00:90.441', '00:00:91.301']
df = pd.DataFrame(timecodes, columns=['TimeCodes'])

我所有的输入都是90秒或更短的时间,所以我想要创建一个以秒作为浮动的列。要做到这一点,我需要选择位置6结束,并使之成为一个浮动,我可以这样做的第一行如下:

代码语言:javascript
复制
float(df['TimeCodes'][0][6:])

这很好,但是如果我现在想要创建一个全新的列“Time_sec”,下面的内容就不能工作了:

代码语言:javascript
复制
df['Time_sec'] = float(df['TimeCodes'][:][6:])

因为df‘’TimeCodes‘6:从第6行到最后一行,而我希望在每一行中保持第6行到最后一个位置。此外,这也不起作用:

代码语言:javascript
复制
 df['Time_sec'] = float(df['TimeCodes'][:,6:])

我需要做个循环吗?一定有更好的方法..。为什么df‘’TimeCodes‘6:不起作用?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-27 17:44:55

您可以使用slice字符串方法,然后将整个过程转换为浮点数:

代码语言:javascript
复制
In [13]: df["TimeCodes"].str.slice(6).astype(float)
Out[13]:
0     1.001
1     3.201
2     9.231
3    11.301
4    20.601
5    31.231
6    90.441
7    91.301
Name: TimeCodes, dtype: float64

至于为什么df['TimeCodes'][:][6:]不起作用,这样做的结果是链接一些选择。首先获取与TimeCodes列关联的TimeCodes,然后从[:]系列中选择所有条目,然后选择索引6或[6:]更高的项。

票数 1
EN

Stack Overflow用户

发布于 2016-10-27 17:59:07

解决方案-- 用str索引floatastype转换

代码语言:javascript
复制
print (df["TimeCodes"].str[6:])
0    01.001
1    03.201
2    09.231
3    11.301
4    20.601
5    31.231
6    90.441
7    91.301
Name: TimeCodes, dtype: object

df['new'] = df["TimeCodes"].str[6:].astype(float)
print (df)
      TimeCodes     new
0  00:00:01.001   1.001
1  00:00:03.201   3.201
2  00:00:09.231   9.231
3  00:00:11.301  11.301
4  00:00:20.601  20.601
5  00:00:31.231  31.231
6  00:00:90.441  90.441
7  00:00:91.301  91.301
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40291063

复制
相关文章

相似问题

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