我使用pandas作为db替代品,因为我有多个数据库(oracle,mssql等),我无法为SQL等价物创建一系列命令.
我在DataFrame中加载了一些表,其中包含一些列:
YEARMONTH, CLIENTCODE, SIZE, .... etc etc
Run Code Online (Sandbox Code Playgroud)
在SQL中,要计算每年不同客户端的数量,请执行以下操作:
SELECT count(distinct CLIENTCODE) FROM table GROUP BY YEARMONTH;
Run Code Online (Sandbox Code Playgroud)
结果就是
201301 5000
201302 13245
Run Code Online (Sandbox Code Playgroud)
我怎么能在熊猫中做到这一点?
我有一个大的(大约12M行)数据帧df说:
df.columns = ['word','documents','frequency']
Run Code Online (Sandbox Code Playgroud)
所以以下内容及时进行:
word_grouping = df[['word','frequency']].groupby('word')
MaxFrequency_perWord = word_grouping[['frequency']].max().reset_index()
MaxFrequency_perWord.columns = ['word','MaxFrequency']
Run Code Online (Sandbox Code Playgroud)
但是,这需要很长时间才能运行:
Occurrences_of_Words = word_grouping[['word']].count().reset_index()
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?有没有更好的方法来计算大型数据框中的出现次数?
df.word.describe()
Run Code Online (Sandbox Code Playgroud)
运行得很好,所以我真的没想到这个Occurrences_of_Words数据帧需要很长时间才能构建.
ps:如果答案很明显,你觉得有必要惩罚我提出这个问题,请同时提供答案.谢谢.