我试图旋转数据框,以便可以创建文档矩阵,但是尝试旋转数据框时遇到一些错误。这是我尝试弄乱之前的原始数据框。
SELECT TO_CHAR(
TO_DATE(
RIGHT('000000' || timecolumn, 6),
'HH24MISS'
),
'HH24:MI:SS')
FROM DBNAME.TABLENAME LIMIT 5
现在,当我尝试在下面运行此代码时,它就会中断。
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
该错误给了我我不理解的 KeyError:'word'。我试图用 tidy_filter ['word] 替换值/列,但这没有用。
**编辑:我正在寻找此输出
df_freq = tidy_filter.pivot_table(values='word', index=tidy_filter.index, columns='word', aggfunc=pd.Series.count)
** Edit2:我在输入tidy_filter ['word']时会给我一个不同的KeyError:'repmiketurner'
答案 0 :(得分:1)
我认为您正在寻找pd.crosstab
pd.crosstab(df.id,df.word)
答案 1 :(得分:1)
我认为您的pivot_table
命令必须更改-您已将columns
和values
的参数互换了。您只需要使用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