我有一个员工名单,我需要知道他们最常在哪个部门.将员工ID与部门名称制表是微不足道的,但从频率表中返回部门名称而不是名册数量是很棘手的.下面是一个简单示例(列名=部门,行名=员工ID).
DF <- matrix(sample(1:9,9),ncol=3,nrow=3)
DF <- as.data.frame.matrix(DF)
> DF
V1 V2 V3
1 2 7 9
2 8 3 6
3 1 5 4
Run Code Online (Sandbox Code Playgroud)
现在我该怎么办?
> DF2
RE
1 V3
2 V1
3 V2
Run Code Online (Sandbox Code Playgroud) 来自这样的数据框架
test <- data.frame('id'= rep(1:5,2), 'string'= LETTERS[1:10])
test <- test[order(test$id), ]
rownames(test) <- 1:10
> test
id string
1 1 A
2 1 F
3 2 B
4 2 G
5 3 C
6 3 H
7 4 D
8 4 I
9 5 E
10 5 J
Run Code Online (Sandbox Code Playgroud)
我想用每个id/string对的第一行创建一个新的.如果sqldf在其中接受R代码,则查询可能如下所示:
res <- sqldf("select id, min(rownames(test)), string
from test
group by id, string")
> res
id string
1 1 A
3 2 B
5 3 C
7 4 D
9 5 E …Run Code Online (Sandbox Code Playgroud) 到目前为止,我一直无法找到一个可以创建像John Stasko那样的旭日阴谋的R库.任何人都知道如何在R或Python中实现这一目标?

我想用ggplot2创建一个人口金字塔.之前曾问过这个问题,但我相信解决方案必须简单得多.
test <- (data.frame(v=rnorm(1000), g=c('M','F')))
require(ggplot2)
ggplot(data=test, aes(x=v)) +
geom_histogram() +
coord_flip() +
facet_grid(. ~ g)
Run Code Online (Sandbox Code Playgroud)
生成此图像.在我看来,这里创建人口金字塔的唯一步骤是反转第一个方面的x轴,使其从50变为0,同时保持第二个不变.有人可以帮忙吗?

from pandas import DataFrame
import pyodbc
cnxn = pyodbc.connect(databasez)
cursor.execute("""SELECT ID, NAME AS Nickname, ADDRESS AS Residence FROM tablez""")
DF = DataFrame(cursor.fetchall())
Run Code Online (Sandbox Code Playgroud)
这可以填充我的pandas DataFrame.但我怎么得到
DF.columns = ['ID', 'Nickname', 'Residence']
Run Code Online (Sandbox Code Playgroud)
直接从光标?该信息是否完全存储在光标中?
是否有一种更短的方法来删除列MultiIndex级别(在我的情况下basic_amt),除了转换它两次?
In [704]: test
Out[704]:
basic_amt
Faculty NSW QLD VIC All
All 1 1 2 4
Full Time 0 1 0 1
Part Time 1 0 2 3
In [705]: test.reset_index(level=0, drop=True)
Out[705]:
basic_amt
Faculty NSW QLD VIC All
0 1 1 2 4
1 0 1 0 1
2 1 0 2 3
In [711]: test.transpose().reset_index(level=0, drop=True).transpose()
Out[711]:
Faculty NSW QLD VIC All
All 1 1 2 4
Full Time 0 1 0 1
Part Time 1 …Run Code Online (Sandbox Code Playgroud) 在IPython中,我习惯写
功能(
然后敲击一个选项卡,获取docstring的内容和命名参数的列表.但是,自从我安装了IPython 2.0以来,这就停止了.有解释或知道修复吗?
docstring tab-completion ipython ipython-notebook jupyter-notebook
我想在为其分配行之前使用MultiIndex创建一个空的 DataFrame.我已经发现空DataFrames不喜欢动态分配MultiIndexes,所以我在创建过程中设置MultiIndex 名称.但是,我不想分配级别,因为这将在以后完成.这是我到目前为止最好的代码:
def empty_multiindex(names):
"""
Creates empty MultiIndex from a list of level names.
"""
return MultiIndex.from_tuples(tuples=[(None,) * len(names)], names=names)
Run Code Online (Sandbox Code Playgroud)
哪能给我
In [2]:
empty_multiindex(['one','two', 'three'])
Out[2]:
MultiIndex(levels=[[], [], []],
labels=[[-1, -1, -1], [-1, -1, -1], [-1, -1, -1]],
names=[u'one', u'two', u'three'])
Run Code Online (Sandbox Code Playgroud)
和
In [3]:
DataFrame(index=empty_multiindex(['one','two', 'three']))
Out[3]:
one two three
NaN NaN NaN
Run Code Online (Sandbox Code Playgroud)
好吧,我对这些NaN毫无用处.我可以在以后轻松放弃它们,但这显然是一个hackish解决方案.谁有更好的?
所以我有一个数字小数表,比方说
id value
2323 2.43
4954 63.98
Run Code Online (Sandbox Code Playgroud)
我想得到
id value
2323 2
4954 63
Run Code Online (Sandbox Code Playgroud)
在T-SQL中有一个简单的功能吗?
In [35]: test = pd.DataFrame({'a':range(4),'b':range(4,8)})
In [36]: test
Out[36]:
a b
0 0 4
1 1 5
2 2 6
3 3 7
In [37]: for i in test['a']:
....: print i
....:
0
1
2
3
In [38]: for i,j in test:
....: print i,j
....:
------------------------------------------------------------
Traceback (most recent call last):
File "<ipython console>", line 1, in <module>
ValueError: need more than 1 value to unpack
In [39]: for i,j in test[['a','b']]:
....: print i,j
....:
------------------------------------------------------------
Traceback …Run Code Online (Sandbox Code Playgroud)