我遇到的问题:reset_index()并在列中重命名字符串。
我有一个数据帧和python序列,如下所示
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
但是,当我尝试使用reset.index()重置索引时,列名变为" index",当我尝试重命名索引时,收到错误消息。
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'
答案 0 :(得分:1)
您收到错误消息,因为您尝试更改的数据框不是df
。
您需要重置res
的索引。然后它工作正常。
res.reset_index().replace({'Give_Show_Navigate_Direct' : 'phrasal_verbs'})