我想删除数据框中以“y”结尾的每一列。由于某种原因,我拥有的数据的每列列出了两次,唯一不同的是列名称,如下所示:
d = {'Team': ['1', '2', '3'], 'Team_y': ['1', '2', '3'], 'Color' : ['red', 'green', 'blue'], 'Color_y' : ['red', 'green', 'blue']}
df = pd.DataFrame(data=d)
df
Team Team_y Color Color_y
0 1 1 red red
1 2 2 green green
2 3 3 blue blue
Run Code Online (Sandbox Code Playgroud)
我知道这是某种字符串格式。我尝试使用 [-1] 对最后一个字母进行索引,但无法完全正常工作。谢谢!
我有一个 distplot,我想绘制一条从 0 到平均频率的 y 值的平均线。我想这样做,但是当 distplot 执行时让该行停止。为什么没有一个简单的参数来做到这一点?这将非常有用。
我有一些代码可以让我几乎到达那里:
plt.plot([x.mean(),x.mean()], [0, *what here?*])
Run Code Online (Sandbox Code Playgroud)
这段代码按照我想要的方式绘制了一条线,除了我想要的 y 值。使 y 最大值停止在 distplot 中的均值频率处的正确数学方法是什么?下面是我的一个 distplots 的示例,使用 0.6 作为 y-max。如果有一些数学方法可以让它停在均值的 y 值处,那就太棒了。我试过将平均值除以计数等。
我一直在使用 pandas 来抓取数据表。使用 pd.read_html() 非常简单,但我尝试使用的网址之一不起作用。这是我的代码:
import pandas as pd
import requests
base_site = 'https://stats.ncaa.org/team/376/stats/15061'
r = requests.get(base_site)
r.status_code
tables = pd.read_html(base_site)
Run Code Online (Sandbox Code Playgroud)
我导入了请求来检查状态代码,它输出 200,这很好。
这是 pd.read_html() 的输出:
---------------------------------------------------------------------------
HTTPError Traceback (most recent call last)
<ipython-input-4-398e418f089e> in <module>()
----> 1 tables = pd.read_html(base_site, attrs = {'class' : 'dataTable', 'id' : 'statgrid'})
11 frames
/usr/lib/python3.6/urllib/request.py in http_error_default(self, req, fp, code, msg, hdrs)
648 class HTTPDefaultErrorHandler(BaseHandler):
649 def http_error_default(self, req, fp, code, msg, hdrs):
--> 650 raise HTTPError(req.full_url, code, msg, hdrs, fp)
651
652 …Run Code Online (Sandbox Code Playgroud) 我正在从 API 访问数据,它返回一列数据,其中包含一个或两个项目列表,如下所示:
编辑:这是一个熊猫系列。
['WR'],
['RB'],
['QB'],
['QB'],
['TE'],
['TE'],
['TE'],
['WR', 'RB'],
['QB'],
['WR'],
['WR'],
['WR'],
['TE'],
['TE'],
['TE'],
['WR'],
['WR'],
['WR'],
['WR'],
['RB'],
['RB'],
['WR', 'RB'],
['WR']
...
Run Code Online (Sandbox Code Playgroud)
等等。我想要做的是简单地将每个列表转换为字符串,如下所示:
'WR',
'RB',
'QB',
'QB',
'TE',
'TE',
'TE',
'WR, RB',
...
Run Code Online (Sandbox Code Playgroud)
等等。我试过.explode()但这不是我想要的,因为我不希望包含两个项目的列表为第二个项目创建一个新行。我也尝试简单地使用索引它,[1:-1]但显然这不起作用,因为括号不是字符串中的字符。我很感激任何帮助。谢谢!
我以前从未见过这个,但我正在制作的seaborn barplot 不会均匀地间隔条形......
代码
fig, ax = plt.subplots(figsize=(25,6))
sns.barplot(x=value.index, y="CustomerValue", data=value,
order=value.index, hue='Response')
plt.xticks(fontsize=10, rotation=90)
Run Code Online (Sandbox Code Playgroud)
数据
Response OrderCount OrderAvgSize AvgDeliverCost AvgOrderValue CustomerValue
CustomerID
508 Walmart+ 48 22 4.94 14.60 700.80
2007 Both Or None 51 21 4.91 13.46 686.46
698 Walmart+ 47 21 4.91 14.02 658.94
1664 Walmart+ 45 22 4.94 14.60 657.00
475 Walmart+ 45 22 4.94 14.60 657.00
575 Both Or None 51 20 4.87 12.88 656.88
1675 Both Or None 50 20 4.87 12.88 644.00
678 Both …Run Code Online (Sandbox Code Playgroud) 假设我有以下 df
val
0 x
1 x
2 z
3 y
4 x
5 y
6 y
7 z
8 x
9 z
Run Code Online (Sandbox Code Playgroud)
我想创建一个新列,以增量方式跟踪每个值的计数,就像这样
val new
0 x x1
1 x x2
2 z z1
3 y y1
4 x x3
5 y y2
6 y y3
7 z z2
8 x x4
9 z z3
Run Code Online (Sandbox Code Playgroud)
我尝试使用count(),但这只是计算总数而不是增量。value_counts()做同样的事情,但只是按值分割,而不是增量。有没有简单的方法来实现这一目标?谢谢!
python ×6
pandas ×4
matplotlib ×2
seaborn ×2
string ×2
dataframe ×1
distribution ×1
html ×1
web-scraping ×1