所以当我打印它时,我有一个字典看起来像这样:
{'10': -10, 'ZT21': 14, 'WX21': 12, '2': 15, '5': -3, 'UM': -25}
Run Code Online (Sandbox Code Playgroud)
我想以自定义方式对它们进行排序,我定义了这种方式.比方说,我希望它进行排序(按键)的方式是ZT21, 10, WX21, UM, 5, 2
,ZT21, 10, WX21, UM, 5, 2
,ZT21, 10, WX21, UM, 5, 2
,ZT21, 10, WX21, UM, 5, 2
,ZT21, 10, WX21, UM, 5, 2
,ZT21, 10, WX21, UM, 5, 2
.
任何人都知道如何以预定义/自定义方式整理字典?我正在做的是从数据库中获取这个字典,它可以提供超过20个密钥,所有密钥都有特定的顺序.始终设置顺序,但有时某些键/值不会出现在字典中.所以这也可能发生:
{'ZT21': 14, 'WX21': 12, '2': 15, '5': -3, 'UM': -25}
Run Code Online (Sandbox Code Playgroud)
排序(按键)为ZT21, 10, WX21, UM, 5, 2
,ZT21, 10, WX21, UM, 5, …
我以前见过这个,根本记不住这个功能.
假设我有一个列"速度",每行有以下1个值:
'Slow', 'Normal', 'Fast'
Run Code Online (Sandbox Code Playgroud)
如何创建一个包含所有行的新数据框,除了"速度"列,现在是3列:"慢""正常"和"快速",其中所有行都标记为1,无论哪一列都是旧的"速度" "专栏是.所以,如果我有:
print df['Speed'].ix[0]
> 'Normal'
Run Code Online (Sandbox Code Playgroud)
我不指望这个:
print df['Normal'].ix[0]
>1
print df['Slow'].ix[0]
>0
Run Code Online (Sandbox Code Playgroud) 这有点难以解释,但我会尽我所能.我现在得到的是我需要加入的两个表,但我们并没有真正的连接ID.我有几列要加入,这是我能做的最好的,我只是想知道何时我们在连接的两边都没有相同的数字.现在,如果右表与左表中的2个条目匹配1,则该1个匹配将加入两个条目.这让我不知道正确的表只有1个条目而左边的2个条目.
我想要的是将右表连接到左(外部),但我不希望每个条目多次加入正确的表.因此,如果右表索引3可以在左侧的索引1和2上连接,我只希望它在索引1上连接.另外,如果索引3和索引4可以在索引1和2上连接,我想要索引1与索引3匹配,索引2与索引4匹配.如果只有1个匹配(索引1 - > 3),但左表中的索引2可以与索引3匹配,我想要索引2不加入.
示例可以最好地描述这个:
a_df = pd.DataFrame.from_dict({1: {'match_id': 2, 'uniq_id': 1}, 2: {'match_id': 2, 'uniq_id': 2}}, orient='index')
In [99]: a_df
Out[99]:
match_id uniq_id
1 2 1
2 2 2
In [100]: b_df = pd.DataFrame.from_dict({3: {'match_id': 2, 'uniq_id': 3}, 4: {'match_id': 2, 'uniq_id': 4}}, orient='index')
In [101]: b_df
Out[101]:
match_id uniq_id
3 2 3
4 2 4
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我想要a_df加入b_df.我希望b_df uniq_id 3与a_df uniq_id 1匹配,b_df 4与a_df 2匹配.
输出看起来像这样:
Out[106]:
match_id_right match_id uniq_id uniq_id_right
1 2 2 1 3
2 2 2 2 …
Run Code Online (Sandbox Code Playgroud) 在Pandas中,有一个用于格式化CSS的新样式选项(http://pandas.pydata.org/pandas-docs/version/0.17.1/generated/pandas.core.style.Styler.html).
之前,当我想将我的数字变成会计/美元术语时,我会使用如下内容:
df = pd.DataFrame.from_dict({'10/01/2015': {'Issued': 200}}, orient='index')
html = df.to_html(formatters={'Issued': format_money})
Run Code Online (Sandbox Code Playgroud)
format_money函数:
def format_money(item):
return '${:,.0f}'.format(item)
Run Code Online (Sandbox Code Playgroud)
现在我想使用Style选项,并保持我的$格式.我没有看到任何方法这样做.
例如样式格式将是这样的:
s = df.style.bar(color='#009900')
#df = df.applymap(config.format_money) -- Doesn't work
html = s.render()
Run Code Online (Sandbox Code Playgroud)
这样会在我的HTML表格中添加条形图(Docs here:http://pandas.pydata.org/pandas-docs/stable/style.html):
所以基本上,我该如何做一些事情,比如添加条形图,并保留或者还将美元格式添加到表中?如果我之前尝试这样做,样式栏不起作用,因为现在他们无法判断数据是否为数字并且错误输出.如果我之后尝试这样做,它会取消样式.
这应该很快,但是我正在做的枢轴/分组工作都没有达到我的需要。
我有一个这样的表:
Letter Period Amount
YrMnth
2014-12 B 6 0
2014-12 C 8 1
2014-12 C 9 2
2014-12 C 10 3
2014-12 C 6 4
2014-12 C 12 5
2014-12 C 7 6
2014-12 C 11 7
2014-12 D 9 8
2014-12 D 10 9
2014-12 D 1 10
2014-12 D 8 11
2014-12 D 6 12
2014-12 D 12 13
2014-12 D 7 14
2014-12 D 11 15
2014-12 D 4 16
2014-12 D 3 17
2015-01 B …
Run Code Online (Sandbox Code Playgroud) 我试图将几个主要包含NaN的列连接到一个,但这里只是一个例子:
2013-06-18 21:46:33.422096-05:00 A NaN
2013-06-18 21:46:35.715770-05:00 A NaN
2013-06-18 21:46:42.669825-05:00 NaN B
2013-06-18 21:46:45.409733-05:00 A NaN
2013-06-18 21:46:47.130747-05:00 NaN B
2013-06-18 21:46:47.131314-05:00 NaN B
Run Code Online (Sandbox Code Playgroud)
这可能会持续3或4或10列,始终为1 pd.notnull()
,其余为NaN.
我想以最快的方式将这些连接成1列.我怎样才能做到这一点?
我不知道这里发生了什么,所以以为我会问你们。
我刚刚在Mac OSX 10.10.2上安装了iPython 3.1
在iPython中,我尝试了没有结果的函数,但这是一个示例:
In [21]: def rn():
....: for ix in range(0,100): print ix
....:
In [22]: %lprun rn()
0
1
2
3
4
....
98
99
Timer unit: 1e-06 s
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我期望输出一个正常的cProfile类型,显示运行的行以及每个行花费的时间。我究竟做错了什么?!
谢谢!
我认为最好用一个例子来说明这一点。我想做的是从组中找到非空数字并将其传播到组的其余部分。
In [52]: df = pd.DataFrame.from_dict({1:{'i_id': 2, 'i_num':1}, 2: {'i_id': 2, 'i_num': np.nan}, 3: {'i_id': 2, 'i_num': np.nan}, 4: {'i_id': 3, 'i_num': np.nan}, 5: {'i_id': 3, 'i_num': 5}}, orient='index')
In [53]: df
Out[53]:
i_num i_id
1 1 2
2 NaN 2
3 NaN 2
4 NaN 3
5 5 3
Run Code Online (Sandbox Code Playgroud)
DataFrame 看起来像这样。我想要的是获取所有 i_id == 2 并使它们的 i_num == 1,以及所有 i_id == 3,并使它们的 i_num == 5 (因此两者都匹配它们的非空组邻居)。
所以最终的结果是这样的:
i_num i_id
1 1 2
2 1 2
3 1 2
4 5 …
Run Code Online (Sandbox Code Playgroud) 全新的Django,请原谅新手问题.我不能为我的生活得到谷歌搜索返回我需要的东西.
首先,我使用inspectdb导入这些.
第二,在提供之前:
def __unicode__(self):
return u'%s %s' % (self.id, self.cuisine)
Run Code Online (Sandbox Code Playgroud)
在模型中,每个数据库在查看管理员时都显示了看起来像绑定对象的内容与实际数据.我以为这是正常的.
现在我正在尝试查询数据库并显示结果.只是做一些简单的事情,代码是:
def expand(request):
userid = Userid.objects.filter(name__contains="Test")
return render(request,'expand.html',{'userid':userid})
Run Code Online (Sandbox Code Playgroud)
返回应该只是测试1,测试2,但我得到:
[<Userid: Userid object>, <Userid: Userid object>]
Run Code Online (Sandbox Code Playgroud)
在模板中尝试了userid,userid.name,并返回对象与内容.
谢谢,对不起,我确信这是一个重复的问题!
模型:
class Userid(models.Model):
id = models.BigIntegerField(primary_key=True, db_column='ID') # Field name made lowercase.
name = models.TextField()
joindate = models.DateField(db_column='joinDate') # Field name made lowercase.
visits = models.IntegerField(null=True, blank=True)
gender = models.TextField(blank=True)
address = models.TextField()
address2 = models.TextField(blank=True)
addresscity = models.TextField(db_column='addressCity') # Field name made lowercase.
addressstate = models.TextField(db_column='addressState') # Field name made …
Run Code Online (Sandbox Code Playgroud)