Python 在我的数据帧上使用pivot_表时出现问题

Python 在我的数据帧上使用pivot_表时出现问题,python,pandas,Python,Pandas,我正在尝试透视我的数据帧,以便生成文档矩阵,但在尝试透视我的数据帧时遇到了一些错误。这是我的原始数据帧,在我尝试处理它之前 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_filt

我正在尝试透视我的数据帧,以便生成文档矩阵,但在尝试透视我的数据帧时遇到了一些错误。这是我的原始数据帧,在我尝试处理它之前

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)
这个错误给了我keyrerror:“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']时,它会给我一个不同的键错误:“repmiketurner”

我想你在寻找pd.crosstab

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

我想您正在寻找
pd.crosstab

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

我认为您的
pivot\u表
命令必须更改-您交换了
值的参数。您只需要使用
columns='word'
values='num'

这就是我的工作

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

# Put pivot table columns in order of unique values of the 'word' column
word_unique = tidy_filter['word'].unique().tolist()
df_freq = df_freq[word_unique]

print(df_freq)
word                 repmiketurner  time  michael  cohen  told  truth  pled  guilty  also  said  collusion
id                                                                                                        
1104159474368024599              1     1        1      1     1      1     1       1     1     1          1

我认为您的
pivot\u表
命令必须更改-您交换了
值的参数。您只需要使用
columns='word'
values='num'

这就是我的工作

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

# Put pivot table columns in order of unique values of the 'word' column
word_unique = tidy_filter['word'].unique().tolist()
df_freq = df_freq[word_unique]

print(df_freq)
word                 repmiketurner  time  michael  cohen  told  truth  pled  guilty  also  said  collusion
id                                                                                                        
1104159474368024599              1     1        1      1     1      1     1       1     1     1          1

你期望的输出是什么?为什么你的
指向同一个字段?@Wen Ben我刚刚用期望的输出进行了编辑。基本上,对于每个tweet(id),我想显示一个单词出现的次数has@AlexS1我刚刚用一个示例输出更新了我的问题。我之所以使用两次单词,是因为我希望每条推文都能给出一些单词出现的次数。你的预期输出是什么?为什么你的
值和
列都指向同一个字段?@Wen Ben我刚刚用期望的输出进行了编辑。基本上,对于每个tweet(id),我想显示一个单词出现的次数has@AlexS1我刚刚用一个示例输出更新了我的问题。我之所以使用两次单词,是因为我希望每条推文都能给出一些单词在每条推文中出现的情况。所以我有一个交叉表快照,它确实有效,但我可能有太多的推文,因为我的文档矩阵非常大,看起来很凌乱。所以我有一个交叉表快照,它确实有效,但我可能有太多的推特,因为我的文档矩阵非常大,看起来很凌乱。这太完美了!这些比特给了我想要的输出!谢谢太完美了!这些比特给了我想要的输出!谢谢