首页 > 解决方案 > 在我的数据框上使用 pivot_table 的问题

问题描述

我正在尝试旋转我的数据框,以便制作文档矩阵,但是在尝试旋转我的数据框时遇到了一些错误。这是我尝试弄乱它之前的原始数据框。

tidy_filter1 = pd.DataFrame(df_tweetText["text"].str.split(expand = True).stack().reset_index())
tidy_filter = pd.DataFrame(tidy_filter1,index = tidy_format1["id"])
tidy_filter = tidy_filter1.rename(index = tidy_filter["id"], columns = {"level_1": "num",0:"word"})
tidy_filter1["level_1"] = tidy_filter1.groupby("id").cumcount()
tidy_filter = tidy_filter.drop(columns = ["id"])
tidy_filter = tidy_filter.rename(index = tidy_format1["id"])

id                    num    word
1104159474368024599    0    repmiketurner
1104159474368024599    1    time
1104159474368024599    2    michael
1104159474368024599    3    cohen
1104159474368024599    4    told
1104159474368024599    5    truth
1104159474368024599    6    pled
1104159474368024599    7    guilty
1104159474368024599    8    also
1104159474368024599    9    said
1104159474368024599    10    collusion

现在,当我尝试在下面运行此代码时,它会中断。

df_freq = tidy_filter.pivot_table(values='word', index=tidy_filter.index, columns='word', aggfunc=pd.Series.count)

该错误给了我KeyError: 'word'我不明白。我试图用tidy_filter['word]替换值/列,但这没有用。

**编辑:我正在寻找这个输出

id                   repmiketurner michael cohen told truth pled guilty also said collusion
1104159474368024599         1         1       1     1   1     1     1      1   1       1
1104155456019357703        0          0       0     1   1     0     0      1   0       0

**Edit2:所以当我输入 tidy_filter['word'] 时,它给了我一个不同的 KeyError: 'repmiketurner'

标签: pythonpandas

解决方案


我想你正在寻找pd.crosstab

pd.crosstab(df.id,df.word)

推荐阅读