小编2Ob*_*Obe的帖子

Lambda包括if ... elif ... else

我想在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重新获得相同的结果?

谢谢你的回复.

python dataframe pandas

39
推荐指数
3
解决办法
5万
查看次数

Pandas合并给出错误"缓冲区维数错误(预期1,得2)"

我正在尝试做一个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')

是否可以像这样合并三列?这里的合并电话有什么问题吗?

python dataframe data-structures pandas

30
推荐指数
2
解决办法
4万
查看次数

Jupyter Notebook-在函数内部绘制-未绘制图形

我想从一个要绘制多个图形的类中调用一个函数。没有引发任何错误,但我没有收到图,而只是:

#############################################
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)

python matplotlib python-3.x pandas jupyter-notebook

10
推荐指数
1
解决办法
1万
查看次数

熊猫合并返回NaN

我有两个大型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)

python merge dataframe pandas

9
推荐指数
1
解决办法
2万
查看次数

为什么numpy.linalg.pinv()比numpy.linalg.inv()更喜欢在线性回归中创建矩阵的逆矩阵

如果我们想通过使用正规方程式搜索线性回归模型的最佳参数θ:

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()之间的差异/优点/缺点在哪里.

python numpy matrix linear-algebra linear-regression

6
推荐指数
2
解决办法
8820
查看次数

绘制lon,lat坐标的城市名称

我想使用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:对象太深,不适合所需的数组

python matplotlib matplotlib-basemap

5
推荐指数
1
解决办法
928
查看次数

使用to_excel()将DataFrame列表写入Excel

我有不同的数据框,并希望使用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)

但这是行不通的。

欣赏每个答案。

python excel dataframe

5
推荐指数
1
解决办法
1444
查看次数

pandas apply()和aggregate()函数之间的区别

如果我只是传递一个函数,那么DataFrame.aggregate()和DataFrame.apply()函数之间的返回值的(类型)有什么不同吗?

func=lambda x: x**2
Run Code Online (Sandbox Code Playgroud)

因为返回值似乎非常相似.文档只告诉:

apply() - > applied:Series或DataFrame

aggregate() - > aggregated:DataFrame

python pandas

3
推荐指数
1
解决办法
2085
查看次数

Seaborn热图更改颜色条的大小

通过以下代码,我绘制了一个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)

在此处输入图片说明

matplotlib heatmap python-3.x seaborn

3
推荐指数
1
解决办法
4112
查看次数

从熊猫系列中删除零的最快方法

我阅读了一个 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)

不幸的是,这段代码非常慢......有没有更快的方法来完成这个?

python series pandas

2
推荐指数
1
解决办法
4401
查看次数

创建按字母顺序升序的列表

我想创建按字母顺序升序的名称,例如 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 alphabetical

2
推荐指数
1
解决办法
229
查看次数

Colorbar 2D直方图Python

我正在尝试在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 matplotlib

1
推荐指数
1
解决办法
696
查看次数

Sklearn算法列表

是否存在将算法或算法类别与此算法适合的任务匹配的列表或目录?就像在sklearn的主页上一样

例如:
文本分类 - >朴素贝叶斯
连续标签的预测 - > LinearRegression

python machine-learning scipy scikit-learn

1
推荐指数
1
解决办法
926
查看次数