首页 > 解决方案 > 如何在数据框中大写首字母缩写词

问题描述

我有一个数据框df,其中包含我需要整齐格式化的公司名称。这些名称已经在标题中:

      Company Name     
0         Visa Inc    
1         Msci Inc
2    Coca Cola Inc
3         Pnc Bank
4         Aig Corp
5    Td Ameritrade 
6         Uber Inc
7       Costco Inc
8   New York Times

由于许多公司使用首字母缩略词或缩写(行、、、、、),1因此我只希望这些公司名称中的第一个字符串为大写,如下所示:345

      Company Name     
0         Visa Inc    
1         MSCI Inc
2    Coca Cola Inc
3         PNC Bank
4         AIG Corp
5    TD Ameritrade 
6         Uber Inc
7       Costco Inc
8   New York Times

我知道我不能得到 100% 准确的替换,但我相信我可以通过只大写第一个字符串来接近,如果:

我怎样才能做到这一点:df['Company Name'] = df['Company Name'].replace()

标签: pythonstringpandasreplace

解决方案


因此,您实际上可以使用附魔模块来确定它是否是字典单词。鉴于你仍然会有一些关闭的结果 IE 优步。

这是我想出的代码,对于变量的可怕名称以及其他的东西感到抱歉。

import enchant
import pandas as pd


def main():
    d = enchant.Dict("en_US")
    listofcompanys = ['Msci Inc',
                      'Coca Cola Inc',
                      'Pnc Bank',
                      'Aig Corp',
                      'Td Ameritrade',
                      'Uber Inc',
                      'Costco Inc',
                      'New York Times']

    dataframe = pd.DataFrame(listofcompanys, columns=['Company Name'])
    for index, name in dataframe.iterrows():
        first_word = name['Company Name'].split()
        is_word = d.check(first_word[0])
        if not is_word:
            name['Company Name'] = first_word[0].upper() + ' ' + first_word[1]

    print(dataframe)



if __name__ == '__main__':
    main()

输出是:

         Company Name
0        MSCI Inc
1   Coca Cola Inc
2        PNC Bank
3        AIG Corp
4   TD Ameritrade
5        UBER Inc
6      Costco Inc
7  New York Times

推荐阅读