• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

TypeError: normalize() argument 2 must be str, not Series z string dataframe

Object Storage Arubacloud
0 głosów
241 wizyt
pytanie zadane 1 lutego 2019 w Python przez MikeP Początkujący (310 p.)
edycja 4 lutego 2019 przez MikeP

Mam dataframe zawierającą wiadomości na każdy dzień.  zawierającą wiadomości na każdy dzień. Próbuję analizować intensywność uczuć na dany dzień. Można powiedzieć, że ogólne odczucie dnia z wiadomości jest pozytywne, negatywne lub neutralne. Oto ramka danych `df_news` :

    	Date	name
    0	2017-10-20	Gucci debuts art installation at its Ginza sto...
    1	2018-08-01	Gucci Joins Paris Fashion Week for Its Spring ...
    2	2018-04-20	Gucci launches its new creative hub Gucci ArtL...
    3	2017-10-20	Gucci to launch homeware line Gucci Decor - CP...
    4	2017-12-07	GUCCI opens new store at Miami Design District...
    5	2018-01-12	Gucci opens Gucci Garden in Florence - LUXUO
    6	2018-02-26	GUCCI's wild experiment with the Fall Winter 2...
    7	2018-08-09	Gucci Revamped London Flagship Store | The Imp...
    8	2018-08-01	Alessandro Michele Announces new Gucci Home co...
    9	2017-10-20	Before He Picks Up the CFDA’s International Aw...

Próbował uzyskać intensywność uczuć za pomocą następującego kodu, który używa [SentimentIntensityAnalyzer] [1] z [nltk.sentiment.vader] [2]:

    from nltk.sentiment.vader import SentimentIntensityAnalyzer
    import unicodedata
    sid = SentimentIntensityAnalyzer()
    for date, row in df_news.T.iteritems():
        try:
            sentence = unicodedata.normalize('NFKD', df_news.loc[date, 'name']).encode('ascii','ignore')
            #print((sentence))
            ss = sid.polarity_scores(str(sentence))
            df_news.set_value(date, 'compound', ss['compound'])
            df_news.set_value(date, 'neg', ss['neg'])
            df_news.set_value(date, 'neu', ss['neu'])
            df_news.set_value(date, 'pos', ss['pos'])
        except TypeError:
            print(df_news.loc[date, 'name'])
            print(date)

Jednak otrzymuję TypeError dla niektórych dat. Dzięki "try catch" nie bierze tego pod uwagę i rysuje mi następującą tabelę:

    	name	compound	neg	neu	pos
    Date					
    2017-10-20	Gucci debuts art installation at its Ginza sto...				
    2018-08-01	Gucci Joins Paris Fashion Week for Its Spring ...				
    2018-04-20	Gucci launches its new creative hub Gucci ArtL...	0.4404	0	0.756	0.244
    2017-10-20	Gucci to launch homeware line Gucci Decor - CP...				
    2017-12-07	GUCCI opens new store at Miami Design District...	0	0	1	0
    2018-01-12	Gucci opens Gucci Garden in Florence - LUXUO	0	0	1	0
    2018-02-26	GUCCI's wild experiment with the Fall Winter 2...	0	0	1	0
    2018-08-09	Gucci Revamped London Flagship Store | The Imp...	0.3182	0	0.602	0.398
    2018-08-01	Alessandro Michele Announces new Gucci Home co...				
    2017-10-20	Before He Picks Up the CFDA’s International Aw...				

Ale kiedy usunę try catch, aby zrozumieć, dlaczego to się nie udało, pojawia się następujący błąd:

    ---------------------------------------------------------------------------
    TypeError                                 Traceback (most recent call last)
    <ipython-input-26-2e9dbfc62bce> in <module>
          4 for date, row in df_news.T.iteritems():
          5 #    try:
    ----> 6     sentence = unicodedata.normalize('NFKD', df_news.loc[date, 'name']).encode('ascii','ignore')
          7     #print((sentence))
          8     ss = sid.polarity_scores(str(sentence))
    
    TypeError: normalize() argument 2 must be str, not Series

Wtedy pomyślałem, że problem dotyczy linii, które nie były ciągami, ale. Na przykład z pierwszym:

    >>>type(df_news['name'][0])
    str

 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 577 wizyt
0 głosów
1 odpowiedź 441 wizyt
0 głosów
1 odpowiedź 256 wizyt
pytanie zadane 29 czerwca 2022 w Python przez mvny Nowicjusz (120 p.)

92,555 zapytań

141,403 odpowiedzi

319,555 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...