我有一个Pandas DataFrame,我想仅在客户编号超过设定次数时才返回DataFrame.
以下是DataFrame的示例:
114 2017-04-26 1 7507 34 13
115 2017-04-26 3 77314 41 14
116 2017-04-27 7 4525 190 315
117 2017-04-27 7 5525 67 94
118 2017-04-27 1 6525 43 378
119 2017-04-27 3 7415 38 27
120 2017-04-27 2 7613 47 10
121 2017-04-27 2 77314 9 3
122 2017-04-28 1 227 17 4
123 2017-04-28 8 4525 205 341
124 2017-04-28 1 7415 31 20
125 2017-04-28 2 77314 8 2
Run Code Online (Sandbox Code Playgroud)
以下是该客户使用此代码发生的次数超过5次:
print(zip_data_df['Customers'].value_counts()>5)
7415 True
4525 …Run Code Online (Sandbox Code Playgroud) 在 Pandas for Python 中,我有一个数据集,其中有一列日期时间。我需要为每一行创建一个新列,其中包含下一个星期日的日期。
我尝试了各种方法尝试使用 iterrows 然后找出一周中的哪一天,并添加一天直到那天是 7,但它没有用,我什至不确定我将如何返回日期而不仅仅是天数。我也不觉得 iterrows 是最好的方法。
从日期列返回下一个星期日的列的最佳方法是什么?
这是一个非常具体的问题,但我正在通过 Python 运行一个自动化脚本,该脚本使用 psycopg2 运行 Postgresql 查询。其中一个字段返回百分比,但不是将它们显示为整数,我想在每个数字后添加一个百分比。例如,我的查询中有这一行:
CASE WHEN (delivered_orders != 0) then round((scanned_deliveries::numeric
/ delivered_orders::numeric)*100) when delivered_orders = 0 then 0 end as
scan_percent
Run Code Online (Sandbox Code Playgroud)
因此,如果有 4 个订单和 3 个被扫描,它将返回 75。我希望它返回 75%。我试过将它与 || 连接起来 '%' 和 || % 在“结束”之后,但 Python 将百分比视为占位符,它说元组超出范围,因为我没有足够的值。我也尝试过将它用作占位符,然后在执行 cursor.execute(query, ('%')) 时放入 '%' 但它说:
值错误:不支持的格式字符
我也尝试了其他一些事情。我正在用头撞墙,以为你们聪明人可能知道我需要做什么。谢谢你的帮助!
我有一个数据框,我想在其中返回包含指定列中最大值的完整行。所以说我创建一个像这样的数据框:
df = pd.DataFrame(np.random.randint(0,100,size=(25, 4)), columns=list('ABCD'))
Run Code Online (Sandbox Code Playgroud)
然后我会有一张这样的表(对不起,我无法形成合适的表,所以我只做了一个简短的表):
A B C D
14 67 35 22
75 21 34 64
Run Code Online (Sandbox Code Playgroud)
假设它像这样持续25行。我想获取列C的前5个最大值并返回这些完整的行。
如果我做:
df['C'].nlargest()
Run Code Online (Sandbox Code Playgroud)
它返回这5个最大值,但是我希望它返回整行。
我以为下面的方法可以工作,但是它给我一个错误“ IndexError:索引超出范围”:
df[df['C'].nlargest()]
Run Code Online (Sandbox Code Playgroud)
我知道这对这里的许多人来说将是一个简单的解决方案,但这让我很沮丧。谢谢你的帮助。
我正在使用 Python 的 SendGrid。我想通过电子邮件抄送一些人。似乎他们可能不再支持对电子邮件进行抄送,尽管我不确定这是真的吗?但肯定有办法解决它,但我很惊讶我找不到太多支持。
这是我的基本代码:
sg = sendgrid.SendGridAPIClient(apikey='*****')
from_email = Email(sender_address, sender_name)
to_email = Email(email_address)
subject = subject
content = Content("text/plain", email_message)
mail = Mail(from_email, subject, to_email, content)
response = sg.client.mail.send.post(request_body=mail.get())
Run Code Online (Sandbox Code Playgroud)
我该如何修改它以便它会在电子邮件中抄送某人?
我试图找出一种方法来确定 DataFrame 中低于预算的所有可能的行组合,所以假设我有一个这样的数据帧:
data = [['Bread', 9, 'Food'], ['Shoes', 20, 'Clothes'], ['Shirt', 15, 'Clothes'], ['Milk', 5, 'Drink'], ['Cereal', 8, 'Food'], ['Chips', 10, 'Food'], ['Beer', 15, 'Drink'], ['Popcorn', 3, 'Food'], ['Ice Cream', 6, 'Food'], ['Soda', 4, 'Drink']]
df = pd.DataFrame(data, columns = ['Item', 'Price', 'Type'])
df
Run Code Online (Sandbox Code Playgroud)
数据
Item Price Type
Bread 9 Food
Shoes 20 Clothes
Shirt 15 Clothes
Milk 5 Drink
Cereal 8 Food
Chips 10 Food
Beer 15 Drink
Popcorn 3 Food
Ice Cream 6 Food
Soda 4 Drink …Run Code Online (Sandbox Code Playgroud) 我很抱歉再次问这个问题,因为我知道这之前已经被问过几次了,我已经研究了我可以在其他所有线程上找到的所有其他解决方案,但没有一个对我有用。无论我尝试什么,这些 xlabels 仍然总是水平出现并混杂在一起。我不知道为什么我的不工作而其他人工作,但我怀疑这与我在图中有三个子图有关。
我已经尝试了以下,以及许多其他的事情:
ax1.set_xticklabels(rotation=30) <-- 什么也没发生
axs[0].set_xticklabels(rotation=30) <-- 错误
plt.xticks(rotation=45) <-- 什么也没发生
这是代码和图。
customer_rev_df = pd.DataFrame(customer_rev, columns='Week Revenue Pieces Stops'.split())
print(customer_rev_df.set_index('Week'))
sns.set_style(style='whitegrid')
fig, axs = plt.subplots(ncols=3, figsize=(16, 6))
ax1 = sns.factorplot(x='Week', y='Revenue', data=customer_rev_df, ax=axs[0])
ax2 = sns.factorplot(x='Week', y='Stops', data=customer_rev_df, ax=axs[1])
ax3 = sns.factorplot(x='Week', y='Pieces', data=customer_rev_df, ax=axs[2])
axs[0].set_ylabel('Revenue')
axs[1].set_ylabel('Stops')
axs[2].set_ylabel('Pieces')
axs[0].set_title('Weekly Revenue')
axs[1].set_title('Weekly Stops')
axs[2].set_title('Weekly Pieces')
plt.tight_layout()
fig.show()
Run Code Online (Sandbox Code Playgroud)
我承认我还比较新,所以放轻松!任何帮助将不胜感激。谢谢!
我正在尝试自动化我们拥有的每日报告,并且我使用查询来提取数据并使用 openpyxl 将其写入 Excel 中,然后在 openpyxl 中执行 vlookup 以匹配单元格值。不幸的是,我对如何迭代行以查找要查找的单元格值感到困惑。
for row in ws['E5:E91']:
for cell in row:
cell.value = "=VLOOKUP(D5, 'POD data'!C1:D87, 2, FALSE)"
Run Code Online (Sandbox Code Playgroud)
它有效,但我不知道如何更改D5值以查找D6、D7、D8等,具体取决于我所在的行。老实说,我不知道如何最好地解决这个问题。显然,我不想为每一行都写出公式,而且一旦我得到它,我还想对其他列执行此操作。
我创建了一个如下所示的地址列表:
['123 Home Court || 456 Jeopardy Lane','456 Jeopardy Lane || 789 Sesame Street','789 Sesame Street || 7221 Long Road']
我想用"||"拆分它们 在for循环中(它需要在for循环中,因为我想对项目做其他工作),但它不按我预期的方式工作.我想对列表中的每个项目执行此操作:
start, end = addresses[0].split('||')
Run Code Online (Sandbox Code Playgroud)
但如果我尝试:
for i in addresses:
start, end = addresses[i].split('||')
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
TypeError:list indices必须是整数或切片,而不是str
有人可以帮我弄清楚如何在for循环中正确执行此操作吗?另外,为什么它会给我这个错误?一如既往地感谢您的帮助!