我有时遇到的一种情况是,我有两个数据框 ( df1, df2),我想df3基于df1和之间多列的交集创建一个新的数据框 ( ) df2。
例如,我想df3通过df1按列Campaign和Group.
import pandas as pd
df1 = pd.DataFrame({'Campaign':['Campaign 1', 'Campaign 2', 'Campaign 3', 'Campaign 3', 'Campaign 4'], 'Group':['Some group', 'Arbitrary Group', 'Group 1', 'Group 2', 'Done Group'], 'Metric':[245,91,292,373,32]}, columns=['Campaign', 'Group', 'Metric'])
df2 = pd.DataFrame({'Campaign':['Campaign 3', 'Campaign 3'], 'Group':['Group 1', 'Group 2'], 'Metric':[23, 456]}, columns=['Campaign', 'Group', 'Metric'])
Run Code Online (Sandbox Code Playgroud)
df1
Campaign Group Metric
0 Campaign 1 Some group 245
1 Campaign …Run Code Online (Sandbox Code Playgroud) 仅在Python中,并使用来自Pandas数据帧的数据,我如何使用PuLP以与Excel相同的方式解决线性编程问题?应在新预算栏目下为每个渠道分配多少预算,以便最大化估算成功的总数?我真的在寻找一个使用数据框中数据的具体示例,而不是真正的高级建议.
问题数据设置
Channel 30-day Cost Trials Success Cost Min Cost Max New Budget
0 Channel1 1765.21 9865 812 882.61 2647.82 0
1 Channel2 2700.00 15000 900 1350.00 4050.00 0
2 Channel3 2160.00 12000 333 1080.00 3240.00 0
Run Code Online (Sandbox Code Playgroud)
这是一个最大化问题.
该目标函数为:
objective_function = sum((df['New Budget']/(df['30-day Cost']/df['Trials']))*(df['Success']/df['Trials']))
Run Code Online (Sandbox Code Playgroud)
该限制是:
df['New Budget']必须相等5000New Budget给定信道可以去不低比Cost MinNew Budget给定信道可以走不高比Cost Max有关如何使用PuLP或任何其他求解器方法转换此pandas数据帧求解器线性问题的任何想法?最终结果将是您在下图中看到的结果.
我有一个基于类的视图,即子类LoginView.
from django.contrib.auth.views import LoginView
class CustomLoginView(LoginView):
def get_success_url(self):
url = self.get_redirect_url()
return url or reverse_lazy('knowledgebase:user_home', kwargs={
'username':self.request.user.username,
})
Run Code Online (Sandbox Code Playgroud)
如果用户的电子邮件尚未激活,我想覆盖错误消息,因为他们必须单击发送到其电子邮件地址的链接。当前的默认消息如下所示:
而不是说:
请输入正确的电子邮件地址和密码。两个地方都要注意大小写。
我想说一句话,大意是:
请确认您的电子邮件,以便您可以登录。
我试过:
from django.contrib.auth.forms import AuthenticationForm
from django.utils.translation import gettext as _
class PickyAuthenticationForm(AuthenticationForm):
def confirm_login_allowed(self, user):
if not user.is_active:
raise forms.ValidationError(
_("Please confirm your email so you can log in."),
code='inactive',
)
Run Code Online (Sandbox Code Playgroud)
class CustomLoginView(LoginView): # 1. <--- note: this is a class-based view
form_class = PickyAuthenticationForm # 2. <--- note: define form …Run Code Online (Sandbox Code Playgroud) 问题设置
import pandas as pd
df = pd.DataFrame(data={'Currency': {0: 111.23, 1: 321.23},
'Int': {0: 23, 1: 3},
'Rate': {0: 0.03030, 1: 0.09840}}
)
Run Code Online (Sandbox Code Playgroud)
生成以下DataFrame
Currency Int Rate
0 111.23 23 0.0303
1 321.23 3 0.0984
Run Code Online (Sandbox Code Playgroud)
我想使用如下所示的dict将非常特定的格式应用于数据框中的每一列:
format_mapping={'Currency': '${:,.2f}', 'Int': '{:,.0f}', 'Rate': '{:.2f}%'}
Run Code Online (Sandbox Code Playgroud)
我知道我可以将applymap用于多列或应用于单个列:
#All columns
df = df.applymap('{:.2f}%'.format)
#Specific columns
df['Rate'] = df['Rate'].apply('{:.2f}%'.format)
Run Code Online (Sandbox Code Playgroud)
题
我怎样才能通过每一列的数据帧进行迭代,并使用字典在应用格式dict key是column和value是string格式化?
最终结果看起来像这样(忽略百分比现在不再乘以100的事实)
Currency Int Rate
0 $111.23 23 0.03%
1 $321.23 3 0.10%
Run Code Online (Sandbox Code Playgroud) 我试图修改由布赖恩·奥克利提供了一些惊人的代码,在一个Tkinter的文本小亮点(标签)的话在一个ButtonRelease-1事件。
我不想突出显示一个单词,而是单击一些文本,将鼠标拖到同一行的另一区域(左或右),然后突出显示该范围wordstart和wordend边界的整个范围。
例如,如果在下面的代码中,单击tk之后第一行的末尾,将鼠标拖到import单词的p并释放鼠标按钮,我希望标签扩展以捕获从到的整个范围。1.01.20
下面的代码使用两个tk.StringVar捕获开始和结束字符串,但是从获得的两个索引中,我将如何将这些开始和结束点应用于范围,然后展开以突出显示到wordstartand wordend范围?
import tkinter as tk
class Example(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent)
self.text = tk.Text(self, wrap="none")
self.text.pack(fill="both", expand=True)
self.start = tk.StringVar()
self.end = tk.StringVar()
self.text.bind("<Button-1>", self.button_down)
self.text.bind("<ButtonRelease-1>", self.button_up)
#self.text.bind("<B1-Motion>", self._on_click)
self.text.tag_configure("highlight", background="green", foreground="black")
with open(__file__, "rU") as f:
data = f.read()
self.text.insert("1.0", data)
def button_down(self, event):
self.start.set(self.text.index('@%s,%s' % (event.x, event.y)))
print(self.start.get())
def button_up(self, event):
self.end.set(self.text.index('@%s,%s' …Run Code Online (Sandbox Code Playgroud) 资料:
from io import StringIO
import pandas as pd
s = '''ID,Level,QID,Text,ResponseID,responseText,date_key,last
375280046,S,D3M,Which is your favorite?,D5M0,option 1,2012-08-08 00:00:00,ynot
375280046,S,D3M,How often? (at home, at work, other),D3M0,Work,2010-03-31 00:00:00,okkk
375280046,M,A78,Do you prefer a, b, or c?,A78C,a,2010-03-31 00:00:00,abc
376918925,M,A78,Which ONE (select only one),A78E,Milk,2004-02-02 00:00:00,launch Wed., '''
df = pd.read_csv(StringIO(s), sep=r',(?!\s)')
Run Code Online (Sandbox Code Playgroud)
问题:我在这里问了一个问题。我遇到了一个新问题。请注意,在最后一行的末尾,这是一个逗号和一个空格。正则表达式sep=r',(?!\s)'应该忽略逗号后跟一个空格。
问题:是否有一种方法可以按字面意义读取最后一列,launch Wed.,其中逗号不是分隔符/定界符,而实际上是last列文本中的逗号- pd.read_csv仅使用?
错误:
ValueError: Expected 8 fields in line 5, saw 9. Error could possibly be due to quotes …Run Code Online (Sandbox Code Playgroud) 在 Python Pandas 中DataFrame,如果“搜索词”列包含来自连接的管道分隔列表中的任何可能的字符串,我将尝试将特定标签应用于行。如何使用 Pandas 执行条件 if、elif、else 语句?
例如:
df = pd.DataFrame({'Search term': pd.Series(['awesomebrand inc', 'guy boots', 'ectoplasm'])})
brand_terms = ['awesomebrand', 'awesome brand']
footwear_terms = ['shoes', 'boots', 'sandals']
#Note: this does not work
if df['Search term'].str.contains('|'.join(brand_terms)):
df['Label'] = 'Brand'
elif df['Search term'].str.contains('|'.join(footwear_terms)):
df['Label'] = 'Footwear'
else:
df['Label'] = '--'
Run Code Online (Sandbox Code Playgroud)
所需输出示例:
Search Term Label
awesomebrand inc Brand
guy boots Footwear
ectoplasm --
Run Code Online (Sandbox Code Playgroud)
我尝试附加.any()到语句的末尾contains(),但它将Brand标签应用到每一行。
我遇到的大多数示例都是比较列值是否==等于(不是我想要的)或正在执行数字比较,而不是文本字符串比较。
我如何将Day(datetime64 [ns])和Hour(int64)组合成一个日期时间列?
Day Hour
0 2010-04-24 17
1 2012-08-20 10
2 2016-03-06 9
3 2016-01-02 10
4 2010-12-21 4
Run Code Online (Sandbox Code Playgroud) 我不明白为什么任何()没有按照我期望的方式工作.下面,我想说,如果城市列表中的任何城市都在短语.split()中,则返回True.但是为什么当phrase.split()['replacement', 'windows', 'in', 'seattle', 'wa']和'seattle'显然在短语.split()列表中时它返回false ?
>>> cities = ['seattle', 'san antonio', 'denver']
>>> phrase = 'replacement windows in seattle wa'
>>> any(cities) in phrase.split()
False
>>> 'seattle' in phrase.split()
True
Run Code Online (Sandbox Code Playgroud) import pandas as pd
import numpy as np
dates = pd.date_range('20141229',periods=14, name='Day')
df = pd.DataFrame({'Sum1': [1667, 1229, 1360, 9232, 8866, 4083, 3671, 10085, 10005, 8730, 10056, 10176, 3792, 3518],
'Sum2': [91, 75, 75, 254, 239, 108, 99, 259, 395, 355, 332, 386, 96, 111],
'Sum3': [365.95, 398.97, 285.12, 992.17, 1116.57, 512.11, 504.47, 1190.96, 1753.6, 1646.25, 1344.05, 1582.67, 560.95, 736.44],
'Sum4': [5, 5, 1, 5, 8, 8, 2, 10, 12, 16, 16, 6, 6, 3]},index=dates); print(df)
Run Code Online (Sandbox Code Playgroud)
在df制作这个样子的:
Sum1 Sum2 …Run Code Online (Sandbox Code Playgroud) Python。学习。RandomForestClassifier. 拟合后RandomForestClassifier,它是否会产生某种可用于创建图形可视化的单一“最佳”“平均”共识树?
是的,我查看了文档。不,它什么也没说。NoRandomForestClassifier没有tree_属性。但是,您可以从中获取森林中的个别树木,clf.estimators_因此我知道我可以从其中之一制作图形。这里有一个例子。我什至可以给所有的树打分,然后在森林中找到得分最高的树,然后选择那一棵树……但这不是我要问的。
我想根据“平均”最终随机森林分类器结果制作图形。这可能吗?或者,最终分类器是否使用底层树来生成分数和预测?
python ×10
pandas ×7
dataframe ×4
any ×1
bind ×1
csv ×1
datetime ×1
dictionary ×1
django ×1
formatting ×1
forms ×1
graphviz ×1
if-statement ×1
loginview ×1
merge ×1
pulp ×1
python-3.x ×1
resampling ×1
scikit-learn ×1
string ×1
tags ×1
text ×1
tkinter ×1