我想用python3中的Pandas做两个类似的操作。 一个有波浪形,另一个没有波浪形。你知道吗
1 - df = df[~(df.teste.isin(["Place"]))]
2 - df = df[(df.teste.isin(["Place"]))]
我试图将tilde声明为变量,这样我就可以只写一行,然后决定是否要使用tilde。但它不起作用:
tilde = ["~", ""]
df = df[tilde[0](df.teste.isin(["Place"]))]
有没有可能做些什么可以减少我的代码?因为我写了许多相等的线只是交换波浪。。。你知道吗
谢谢!你知道吗
为什么我要把波浪形作为变量:
def server_latam(df):
df.rename(columns={'Computer:OSI':'OSI'}, inplace=True)
df = df[~(df.teste.isin(["Place"]))]
df1 = df.loc[df.model != 'Virtual Platform', 'model'].count()
print("LATAM")
print("Physical Servers: ",df1)
df2 = df.loc[df.model == 'Virtual Platform', 'model'].count()
print("Virtual Servers: ",df2)
df3 = df.groupby('platformName').size().reset_index(name='by OS: ')
print(df3)
def server_latam_without_tilde(df):
df.rename(columns={'Computer:OSI':'OSI'}, inplace=True)
df = df[(df.teste.isin(["Place"]))]
df1 = df.loc[df.model != 'Virtual Platform', 'model'].count()
print("LATAM")
print("Physical Servers: ",df1)
df2 = df.loc[df.model == 'Virtual Platform', 'model'].count()
print("Virtual Servers: ",df2)
df3 = df.groupby('platformName').size().reset_index(name='by OS: ')
print(df3)
在每个函数的第二行中,将显示颚化符。你知道吗
对于您有限的用例,您所请求的内容所带来的好处是有限的。你知道吗
分组方式
然而,你真正的问题是你必须创建的变量的数量。您可以通过
GroupBy
和计算石斑鱼将它们减半:然后通过
dfs[0]
和dfs[1]
访问数据帧,因为False == 0
和True == 1
。最后一个例子有一个好处。现在不需要创建不必要的新变量。数据帧是有组织的,因为它们存在于同一个字典中。你知道吗功能调度
通过
operator
模块和一个标识函数可以满足您的精确需求:顺序拆包
如果您打算使用一行,请使用序列解包:
注意:您可以通过以下方式复制
GroupBy
结果:但这是冗长和复杂的。坚持使用
GroupBy
解决方案。你知道吗您可以通过定义测试,然后对这些测试进行迭代,来稍微压缩代码。让我举例说明:
这样,实际工作只有两行,只需将另一个测试添加到列表中即可避免重复代码。不知道这是不是你想要的。你知道吗
相关问题 更多 >
编程相关推荐