首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataFrame字符串操作

DataFrame字符串操作
EN

Stack Overflow用户
提问于 2014-12-27 02:27:04
回答 3查看 3.1K关注 0票数 0

我有一个dataframe,它有一列数据,如下所示:

代码语言:javascript
复制
AAH.
AAH.
AAR.UN
AAR.UN
AAR.UN
AAR.UN
AAV.
AAV.
AAV.

我认为我需要使用apply方法来修剪列数据。因此,如果句点后有任何变化,请保持数据不变,但如果句点后没有任何内容,则只返回字母,末尾不带句点。我知道我可以使用lambda函数,或者字符串拆分或其他方法来实现这一点,但我没有太多的想法来实现它。

这就是我到目前为止所知道的:

代码语言:javascript
复制
df.apply(lambda x: string.split('.'))

我不确定是否可以这样使用if语句或带有lambda函数的其他东西?

如有任何指导,敬请惠顾。

EN

回答 3

Stack Overflow用户

发布于 2014-12-27 02:43:24

由于只有一列,您可以通过.str (docs)利用矢量化字符串操作:

代码语言:javascript
复制
>>> df
        0
0    AAH.
1    AAH.
2  AAR.UN
3  AAR.UN
4  AAR.UN
5  AAR.UN
6    AAV.
7    AAV.
8    AAV.
>>> df[0] = df[0].str.rstrip('.')
>>> df
        0
0     AAH
1     AAH
2  AAR.UN
3  AAR.UN
4  AAR.UN
5  AAR.UN
6     AAV
7     AAV
8     AAV

否则,你将不得不做一些像df.applymap(lambda x: x.rstrip("."))这样的事情,或者下拉到numpy char方法。

票数 2
EN

Stack Overflow用户

发布于 2014-12-27 02:56:18

您也可以使用lambda函数来完成此操作:

代码语言:javascript
复制
>>> L = [['AAH.'],
         ['AAR.UN'],
         ['AAR.UN'],
         ['AAV.'],
         ['AAV.']]

>>> df = pd.DataFrame(L)
>>> M = lambda x: x[0][:-1] if x[0][-1]=='.' else x[0][:]
>>> df = df.apply(M, axis=1)

>>> df
0       AAH
1    AAR.UN
2    AAR.UN
3       AAV
4       AAV
票数 0
EN

Stack Overflow用户

发布于 2018-06-30 23:34:08

代码语言:javascript
复制
def change_to_date(string):
    seq = (string[:2],string[2:5],string[5:])
    return '-'.join(seq)

pt['DATE'] = pt['DATE'].apply(change_to_date)

对于类似的问题,我对列应用了一个简单的函数来操作所有字符串值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27660583

复制
相关文章

相似问题

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