例如,我有简单的DF:
import pandas as pd
from random import randint
df = pd.DataFrame({'A': [randint(1, 9) for x in xrange(10)],
'B': [randint(1, 9)*10 for x in xrange(10)],
'C': [randint(1, 9)*100 for x in xrange(10)]})
Run Code Online (Sandbox Code Playgroud)
我可以使用Pandas的方法和习语从"A"中选择"B"的相应值大于50,"C" - 不等于900的值吗?
我正在看这个和这个线程,虽然我的问题没有那么不同,但它有一些差异.我有一个数据帧floats,我想用字符串替换.说:
A B C
A 0 1.5 13
B 0.5 100.2 7.3
C 1.3 34 0.01
Run Code Online (Sandbox Code Playgroud)
对于这个表我想用几个标准替换,但只有第一个替换工作:
df[df<1]='N' # Works
df[(df>1)&(df<10)]#='L' # Doesn't work
df[(df>10)&(df<50)]='M' # Doesn't work
df[df>50]='H' # Doesn't work
Run Code Online (Sandbox Code Playgroud)
如果我改为基于第二行的选择float,仍然不起作用:
((df.applymap(type)==float) & (df<10) & (df>1)) #Doesn't work
Run Code Online (Sandbox Code Playgroud)
我想知道如何申请pd.DataFrame().mask这里,或任何其他方式.我该怎么解决这个问题?
或者,我知道我可以逐列阅读并在每个系列中应用替换,但这似乎有点适得其反
编辑:任何人都可以解释为什么上面的4个简单分配不起作用?