如何连接/使用字符串在python/pandas中执行命令
我想使用字符串“命令”来自动化一些分析 比如:如何连接/使用字符串在python/pandas中执行命令,python,string,pandas,concatenation,Python,String,Pandas,Concatenation,我想使用字符串“命令”来自动化一些分析 比如: str_a = 'df.col_1.isna()' str_b = ' & ' str_c = 'df.col_2.isna()' str_tot = str_a + str_b + str_c 然后使用字符串对df中的NaN行进行排序: df.loc[str_tot, :] 最后一个应等于: df.loc[df.col_1.isna() & df.col_2.isna(), :] 但是python编译器
str_a = 'df.col_1.isna()'
str_b = ' & '
str_c = 'df.col_2.isna()'
str_tot = str_a + str_b + str_c
然后使用字符串对df中的NaN行进行排序:
df.loc[str_tot, :]
最后一个应等于:
df.loc[df.col_1.isna() & df.col_2.isna(), :]
但是python编译器将str_tot读取为[list],而不是字符串,返回错误
有没有办法避免这种情况
thx很多 我习惯于在VBA中构建SQL字符串。。。在python中这是一个错误的想法吗?关闭,您需要的是,但是如果需要使用函数add parameter
engine='python'
:
df = pd.DataFrame({
'A':list('abcdef'),
'col_1':[np.nan,5,4,5,5,4],
'C':[7,8,9,4,2,3],
'col_2':[np.nan,3,5,7,1,np.nan],
'E':[5,3,6,9,2,4],
'F':list('aaabbb')
})
print (df)
A col_1 C col_2 E F
0 a NaN 7 NaN 5 a
1 b 5.0 8 3.0 3 a
2 c 4.0 9 5.0 6 a
3 d 5.0 4 7.0 9 b
4 e 5.0 2 1.0 2 b
5 f 4.0 3 NaN 4 b
str_a = 'col_1.isna()'
str_b = ' & '
str_c = 'col_2.isna()'
str_tot = str_a + str_b + str_c
print (str_tot)
col_1.isna() & col_2.isna()
print (df.query(str_tot, engine='python'))
A col_1 C col_2 E F
0 a NaN 7 NaN 5 a
另一个想法是使用事实np.nan==np.nan
是False
,:
另一种方法是使用python
eval
str_a = 'df.col_1.isna()'
e = eval(str_a)
print(e)
对于上面的示例:
df = pd.DataFrame({
'A':list('abcdef'),
'col_1':[np.nan,5,4,5,5,4],
'C':[7,8,9,4,2,3],
'col_2':[np.nan,3,5,7,1,np.nan],
'E':[5,3,6,9,2,4],
'F':list('aaabbb')
})
print (df)
A col_1 C col_2 E F
0 a NaN 7 NaN 5 a
1 b 5.0 8 3.0 3 a
2 c 4.0 9 5.0 6 a
3 d 5.0 4 7.0 9 b
4 e 5.0 2 1.0 2 b
5 f 4.0 3 NaN 4 b
会回来的
0 True
1 False
2 False
3 False
4 False
5 False
请问这种非正统设计的原因是什么?弦从哪里来?它们是由用户键入的、从文件读取的还是其他什么?你可以看一下,但它可能是jobHi DYZ的错误工具,它只是在我的数据分析中建立了一点自动化…我在一边建立字符串,然后我提供了一个小函数。。。你为什么说这是非正统的?什么是“东正教”?太多太多了。这和我想要的很接近。不知道是否有更通用的功能。我的只是一个例子:我想构建一个更复杂的字符串。另外:这适用于查询行,那么列呢?i、 假设我想在某些行上定位一个df(现在我知道怎么做了,thx),将值更改为定义列的单元格。有没有办法“查询”选择列(?df[col_x].query(string)='123'?)THX很多-@BusinessExploration-不容易,你需要什么。也许你可以检查一下,但一般来说,一些单卫星解决方案是可能的,但确实很复杂。。。非常感谢,我认为你指出了正确的方向。我给你提供了一个链接的小视图和概念在那里。。。即使我很惊讶看到这么多信息。使用字符串生成查询在VBA()中是正常的做法。。。我需要学习…@BusinessExploration-ya,每种语言都有点不同我是否应该删除@BusinessExploration?不,请删除,它增加了上下文。eval和exec在搜索解决方案时遇到的东西。。。
0 True
1 False
2 False
3 False
4 False
5 False