什么是从pandas DataFrame中删除nan和inf/-inf值而不重置的最快/最简单的方法mode.use_inf_as_null?我希望能够使用subset和how参数dropna,除了inf被认为缺失的值,例如:
df.dropna(subset=["col1", "col2"], how="all", with_inf=True)
Run Code Online (Sandbox Code Playgroud)
这可能吗?有没有办法告诉dropna我inf在其缺失值的定义中包含哪些内容?
我正在处理数百个熊猫数据帧.典型的数据框如下:
import pandas as pd
import numpy as np
data = 'filename.csv'
df = pd.DataFrame(data)
df
one two three four five
a 0.469112 -0.282863 -1.509059 bar True
b 0.932424 1.224234 7.823421 bar False
c -1.135632 1.212112 -0.173215 bar False
d 0.232424 2.342112 0.982342 unbar True
e 0.119209 -1.044236 -0.861849 bar True
f -2.104569 -0.494929 1.071804 bar False
....
Run Code Online (Sandbox Code Playgroud)
有些操作我在列值之间进行划分,例如
df['one']/df['two']
Run Code Online (Sandbox Code Playgroud)
但是,有时我会将其除以零,或者两者兼而有之
df['one'] = 0
df['two'] = 0
Run Code Online (Sandbox Code Playgroud)
当然,这会输出错误:
ZeroDivisionError: division by zero
Run Code Online (Sandbox Code Playgroud)
我宁愿0/0实际上意味着"这里没有任何东西",因为这通常是数据帧中的零意味着什么.
(a)我如何将其编码为"除以零"为0?
(b)如果遇到零除,我如何将其编码为"通过"?
我有以下数据:
a = pd.Series([1, 2, 3])
b = pd.Series([0, 0, 0])
Run Code Online (Sandbox Code Playgroud)
如果被零除,在某些情况下我想
但是以下给出了“意外”结果:
a.div(b, fill_value = 0)
0 inf
1 inf
2 inf
a.div(b).fillna(0)
0 inf
1 inf
2 inf
a.div(b).combine_first(a)
0 inf
1 inf
2 inf
Run Code Online (Sandbox Code Playgroud)
我想到达:
情况1:将数据设置为特定值
0 0
1 0
2 0
Run Code Online (Sandbox Code Playgroud)
情况2:将值设置为特定的序列
0 1
1 2
2 3
Run Code Online (Sandbox Code Playgroud) 我正在尝试添加一个新列,该列是另外两个列之间除法的结果,但通过仅将除法应用于分母大于零的行来消除除以零行。
df['division'] = 0
df.loc[(df['B'] > 0), 'division'] = (df['A'] / df['B'])
Run Code Online (Sandbox Code Playgroud)
当您设置 时,它工作得很好df = df.head(X),其中 X 消除了“B”中不包含零的行,所以我知道这是条件格式的失败,但我不明白为什么。
这种条件格式不起作用是否有一个不明显的原因?这种格式确实可以正常工作:
df.loc[df['B'] > 0]
Run Code Online (Sandbox Code Playgroud)
并返回df您所期望的。