我想在lambda函数中使用if ... elif ... else将lambda函数应用于DataFrame列.
df和代码是smth.喜欢:
df=pd.DataFrame({"one":[1,2,3,4,5],"two":[6,7,8,9,10]})
df["one"].apply(lambda x: x*10 if x<2 elif x<4 x**2 else x+10)
Run Code Online (Sandbox Code Playgroud)
显然这种方式不起作用.有没有办法申请,如果.... elif ....其他的lambda?如何使用List Comprehension重新获得相同的结果?
谢谢你的回复.
我正在尝试做一个pandas merge并在我尝试运行时从标题中获得上述错误.我使用3列匹配,而在我仅在2列上进行类似合并之前它工作正常.
df = pd.merge(df, c, how="left",
left_on=["section_term_ps_id", "section_school_id", "state"],
right_on=["term_ps_id", "term_school_id", "state"])
Run Code Online (Sandbox Code Playgroud)
两个数据帧的列
DF:
索引([u'section_ps_id',u'section_school_id',u'section_course_number',u'secti on_term_ps_id',u'section_staff_ps_id',u'section_number',u'section_expression',u'section_grade_level',u'state',u 'sections_id',u'course_ps_id',u'course_sc hool_id',u'course_number',u'course_schd_dept',u'courses_id',u'school_ps_id',u'course_school_id',u'school_name',u'school_abbr', u'school_low_grade',u'sch ool_high_grade',u'school_alt_school_number',u'school_state',u'school_phone',u'school_fax',u'school_principal',u'school_principal_phone',u'school_principa l_email',u'school_asst_principal ',u'school_asst_principal_phone',u'school_ass t_principal_email'],dtype ='object')
C:
索引([u'term_ps_id',u'term_school_id',u'term_portion',u'term_start_date',u'term_end_date',u'term_abbreviation',u'term_name',u'state',u'terms_id',u' sch ool_ps_id',u'term_school_id',u'school_name',u'school_abbr',u'school_low_grad e',u'school_high_grade',u'school_alt_school_number',u'school_state',u'school _phone',u'school_fax' ,u'school_principal',u'school_principal_phone',u'school _principal_email',u'school_asst_principal',u'school_asst_principal_phone',你的chool_asst_principal_email'],dtype ='object')
是否可以像这样合并三列?这里的合并电话有什么问题吗?
我想从一个要绘制多个图形的类中调用一个函数。没有引发任何错误,但我没有收到图,而只是:
#############################################
Histograms of the continuous data:
#############################################
<Figure size 640x480 with 1 Axes>
<Figure size 640x480 with 1 Axes>
<Figure size 640x480 with 1 Axes>
<Figure size 640x480 with 1 Axes>
<Figure size 640x480 with 1 Axes>
<Figure size 640x480 with 1 Axes>
<Figure size 640x480 with 1 Axes>
<Figure size 640x480 with 1 Axes>
<Figure size 640x480 with 1 Axes>
<Figure size 640x480 with 1 Axes>
<Figure size 640x480 with 1 Axes>
<Figure size 640x480 with 1 Axes> …Run Code Online (Sandbox Code Playgroud) 我有两个大型Dataframe合并的问题,因为虽然有合适的值,但合并返回NaN值.这两个dfs的形状如下:
DF1
Motor
2232
1524
2230
2230
2224
1516
1724
2224
1524
1624
1724
2224
2224
1524
1524
1516
1524
2224
1624
1724
1724
2224
2224
Run Code Online (Sandbox Code Playgroud)
DF2
Motor Output Torque (mNm)
0615 0,17
1219 0,72
1516 0,59
1624 2
2230 4,7
2233 5,9
0816 0,7
1016 0,92
1024 1,6
1224 1,7
1319 1,4
1331 3,8
1516 0,97
1524 2,9
1717 2,2
1724 4,5
2224 6,8
2232 10
1336 3,6
1727 4,9
1741 8,8
2237 12
2642 26
Run Code Online (Sandbox Code Playgroud)
我用的代码是:
MergeDat=MergeDat.merge(Motor,how="left")
print(MergeDat) …Run Code Online (Sandbox Code Playgroud) 如果我们想通过使用正规方程式搜索线性回归模型的最佳参数θ:
theta = inv(X ^ T*X)*X ^ T*y
一步是计算inv(X ^ T*X).因此numpy提供了np.linalg.inv()和np.linalg.pinv()
虽然这会导致不同的结果:
X=np.matrix([[1,2104,5,1,45],[1,1416,3,2,40],[1,1534,3,2,30],[1,852,2,1,36]])
y=np.matrix([[460],[232],[315],[178]])
XT=X.T
XTX=XT@X
pinv=np.linalg.pinv(XTX)
theta_pinv=(pinv@XT)@y
print(theta_pinv)
[[188.40031946]
[ 0.3866255 ]
[-56.13824955]
[-92.9672536 ]
[ -3.73781915]]
inv=np.linalg.inv(XTX)
theta_inv=(inv@XT)@y
print(theta_inv)
[[-648.7890625 ]
[ 0.79418945]
[-110.09375 ]
[ -74.0703125 ]
[ -3.69091797]]
Run Code Online (Sandbox Code Playgroud)
第一个输出,即pinv的输出是正确的输出,另外在numpy.linalg.pinv()文档中推荐.但是为什么这个以及inv()和pinv()之间的差异/优点/缺点在哪里.
我想使用Basemap包将城市名称绘制到德国地图上.我已经指定了经度和latitide值:
Cname=Form_Cities["name"].values
Clat=Form_Cities["lat"].values
Clon=Form_Cities["lon"].values
Run Code Online (Sandbox Code Playgroud)
此外,
map=Basemap(projection="lcc",resolution="l",width=1E6,height=1E6,lon_0=9.9167,lat_0=51.5167,fix_aspect=False)#Resturn just the empty "figure with no conotents on it
map.shadedrelief()
map.drawcountries(color="black",zorder=1,linewidth=1)
Run Code Online (Sandbox Code Playgroud)
与:
ax.annotate(s=Cname,xy=(Clon,Clat),xycoords="axes pixels")
Run Code Online (Sandbox Code Playgroud)
我想绘制城市名称,但它不起作用但返回异常
ValueError:对象太深,不适合所需的数组
我有不同的数据框,并希望使用List Comprehension或方便的函数(分别编写每个df)将它们写入excel。
目前,我的方法是将列表理解与:
AList=[a,b,c,d]
writer=pd.ExcelWriter(r"P:\Data\Test.xlsx")
[A.to_excel(writer,sheet_name="{0}".format(A)) for A in AList]
writer.save()
Run Code Online (Sandbox Code Playgroud)
但这是行不通的。
欣赏每个答案。
如果我只是传递一个函数,那么DataFrame.aggregate()和DataFrame.apply()函数之间的返回值的(类型)有什么不同吗?
func=lambda x: x**2
Run Code Online (Sandbox Code Playgroud)
因为返回值似乎非常相似.文档只告诉:
apply() - > applied:Series或DataFrame
aggregate() - > aggregated:DataFrame
通过以下代码,我绘制了一个seaborn热图以及一个colorbar。我想将颜色条的大小设置为等于热图的大小。我该如何实现?
我尝试使用来解决颜色栏问题,fig.colorbar(heatmap)但这会返回错误:
AttributeError: 'AxesSubplot' object has no attribute 'autoscale_None'
Run Code Online (Sandbox Code Playgroud)
码:
fig,ax=plt.subplots(figsize=(30,60))
cmap = plt.get_cmap('inferno',30)
cmap.set_under('white')#Colour values less than vmin in white
cmap.set_over('yellow')# colour valued larger than vmax in red
Crosstab=50000*np.random.randn(10,10)
heatmap=sns.heatmap(Crosstab[::-1],cmap=cmap,annot=False,square=True,ax=ax,vmin=1,vmax=50000,linewidths=0.8,linecolor="grey")
plt.show()
Run Code Online (Sandbox Code Playgroud)
我阅读了一个 excel 文件(> 15 MB)的几个工作表,其中每个工作表都有 > 10000 列。其次,我选择一列(仅由整数组成),从该列中删除所有值 == 0 并将此列写入新的 df2。此外,我计算了描述性统计数据。
数据如下所示:
Gel.Menge Erf.datum Freig.
0 0.0 26.11.2014 26.11.2014
1 10.0 06.11.2014 07.11.2014
2 5.0 19.12.2014 08.01.2015
3 7.0 07.07.2015 17.07.2015
4 0.0 21.07.2015 22.07.2015
5 5.0 18.03.2016 22.03.2016
6 10.0 29.03.2016 31.03.2016
7 0.0 20.07.2016 21.07.2016
8 20.0 13.10.2016 17.10.2016
9 0.0 01.12.2014 01.12.2014
10 0.0 20.04.2015 20.04.2015
Run Code Online (Sandbox Code Playgroud)
我使用的代码是:
inpath=r"P:\Data.xlsx"
df1=pd.DataFrame()
for i in ["67059070","67059075","67060055","Screwing Total"]:
df=pd.read_excel(io=inpath,header=0,sheetname="{0}".format(i))
df1["Gel.Menge"]=df["Gel.Menge"].where(df["Gel.Menge"]!=0).dropna()
print(np.round(df1.mode()))
print(np.round(df1.describe())
Run Code Online (Sandbox Code Playgroud)
不幸的是,这段代码非常慢......有没有更快的方法来完成这个?
我想创建按字母顺序升序的名称,例如 Excel 中的列名称。那就是我想要拥有某物。如a、b、c、...、z、aa、ab、...az、...zz、aaa、aab、...
我努力了:
for i in range(1000):
mod = int(i%26)
div = int(i/26)
print(string.ascii_lowercase[div]+string.ascii_lowercase[mod])
Run Code Online (Sandbox Code Playgroud)
直到zz为止都有效,但由于索引耗尽而失败
aa
ab
ac
ad
ae
af
ag
ah
ai
aj
ak
al
.
.
.
zz
Run Code Online (Sandbox Code Playgroud)
索引错误
我正在尝试在Python中实现2D直方图的颜色条。
这是我的代码:
import matplotlib.pyplot as plt
import numpy as np
mean=[0,0]
cov=[[1,1],[1,2]]
x,y = np.random.multivariate_normal(mean,cov,10000).T
fig=plt.figure()
ax=plt.axes()
cax=ax.hist2d(x,y,bins=30,cmap="Blues")
cb=fig.colorbar(cax)
cb.ax.set_label("counts in bin")
plt.show()
Run Code Online (Sandbox Code Playgroud)
但是在这里我得到了错误信息:
AttributeError:“元组”对象没有属性“ autoscale_None”
我究竟做错了什么?我想要面向对象,因此我想使用ax和fig的方法,而不是使用plt的功能。
我希望有人能帮助我...
python ×12
pandas ×6
dataframe ×4
matplotlib ×4
python-3.x ×2
alphabetical ×1
excel ×1
heatmap ×1
matrix ×1
merge ×1
numpy ×1
scikit-learn ×1
scipy ×1
seaborn ×1
series ×1