समस्या जो मुझे आ रही है: रीसेट_इंडेक्स () और कॉलम के अंदर स्ट्रिंग्स का नाम बदलना।

मेरे पास डेटाफ्रेम और पायथन अनुक्रम है जो निम्न जैसा दिखता है:

from collections import Counter
import pandas as pd

df = pd.DataFrame([['Directions to Starbucks', 1045],
                   ['Show me directions to Starbucks', 754],
                   ['Give me directions to Starbucks', 612],
                   ['Navigate me to Starbucks', 498],
                   ['Display navigation to Starbucks', 376],
                   ['Direct me to Starbucks', 201],
                   ['Navigate to Starbucks', 180]],
                  columns = ['Utterance', 'Frequency'])

c = Counter()

for row in df.itertuples():
    for i in row[1].split():
        c[i] += row[2]

res = pd.DataFrame.from_dict(c, orient='index')\
                  .rename(columns={0: 'Count'})\
                  .sort_values('Count', ascending=False)

def add_combinations(df, lst):
    for i in lst:
        words = '_'.join(i)
        df.loc[words] = df.loc[df.index.isin(i), 'Count'].sum()
    return df.sort_values('Count', ascending=False)

lst = [('Give', 'Show', 'Navigate', 'Direct')]

res = add_combinations(res, lst)

इसने मुझे निम्नलिखित df . दिया है

                           Count
to                          3666
Starbucks                   3666
Give_Show_Navigate_Direct   2245
me                          2065
directions                  1366
Directions                  1045
Show                         754
Navigate                     678
Give                         612
Display                      376
navigation                   376
Direct                       201

हालांकि, जब मैंने रीसेट.इंडेक्स() का उपयोग करके इंडेक्स को रीसेट करने का प्रयास किया, तो कॉलम नाम "इंडेक्स" बन गया, और जब मैंने इंडेक्स का नाम बदलने का प्रयास किया, तो मुझे एक त्रुटि संदेश मिला।

index                       Count
to                          3666
Starbucks                   3666
Give_Show_Navigate_Direct   2245
me                          2065
directions                  1366

इसके अलावा, मैं एक साधारण शब्दकोश का उपयोग करके Give_Show_Navigate_Direct का नाम बदलने का प्रयास कर रहा हूं, लेकिन ऐसा लगता है कि जब तक मैं अनुक्रमणिका/स्तंभ नाम की समस्या को ठीक नहीं करता, तब तक मैं ऐसा नहीं कर सकता।

df['index'].replace({'Give_Show_Navigate_Direct' : 'phrasal_verbs'})
KeyError: 'index'
-1
user_seaweed 27 मार्च 2018, 16:47

1 उत्तर

सबसे बढ़िया उत्तर

आपको एक त्रुटि संदेश मिल रहा है क्योंकि आप जिस डेटाफ़्रेम को बदलने का प्रयास कर रहे हैं वह df नहीं है।

आपको इसके बजाय res की अनुक्रमणिका को रीसेट करने की आवश्यकता है। तब यह ठीक काम करता है।

res.reset_index().replace({'Give_Show_Navigate_Direct' : 'phrasal_verbs'})
1
RCA 27 मार्च 2018, 13:55