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我刚刚用一个示例输出更新了我的问题。我之所以使用两次单词,是因为我希望每条推文都能给出一些单词在每条推文中出现的情况。所以我有一个交叉表快照,它确实有效,但我可能有太多的推文,因为我的文档矩阵非常大,看起来很凌乱。所以我有一个交叉表快照,它确实有效,但我可能有太多的推特,因为我的文档矩阵非常大,看起来很凌乱。这太完美了!这些比特给了我想要的输出!谢谢太完美了!这些比特给了我想要的输出!谢谢