我有一台1600x115,316的DataFrame,大部分是NaN。我想删除其中不超过两个值的每一列。我已经写了一些可以工作的代码,但活着的人需要很长时间。
for eachColumn in df.columns:
if np.sum(df[eachColumn]) <= 2:
df.drop(eachColumn, axis=1, inplace=True)
有没有更好的方法来完成我想要做的事情?
我意识到从数据文件中删除NaN和df.dropna一样容易,但出于某些原因,这并不适用于我,我也不知道为什么。
这是我的原始数据:
fish_frame1: 0 1 2 3 4 5 6 7
0 #0915-8 NaN NaN NaN NaN NaN NaN NaN
1 NaN NaN NaN LIVE WGT NaN AMOUNT NaN TOTAL
2
基本上,我想数的最频繁的项目分组为2个变量。我使用以下代码:
dfgrouped = data[COLUMNS.copy()].groupby(['Var1','Var2']).agg(lambda x: stats.mode(x)[1])
此代码工作,但不工作的列有南值,因为Nan值是浮动的,而其他是str。因此,显示了此错误:
'<' not supported between instances of 'float' and 'str'
我想省略NaN值和其余的计数模式。因此str(x)不是一个解决方案
我无法使我的头在合并和加入。
我有一个初始数据框架,如下所示:
Car Units Month
BMW 800 Jan
Lexus 150 Jan
Audi 210 Feb
Mustang 90 Mar
Bentley 110 Feb
Jaguar 90 Jan
我将陆续获得更多的数据文件来附加到这个初始的df中。
我只需要附加那些在“汽车”栏和“月份”栏中唯一的值。
假设我有另一个数据文件要追加:
Car Units Month
BMW 130 Jan
Tata 150 Jan
Maruti 11
根据我的理解,axis=0是垂直向下跨行运行,axis =1是水平跨列运行,例如:
In [55]: df1
Out[55]:
x y z
0 1 3 8
1 2 4 NaN
2 3 5 7
3 4 6 NaN
4 5 7 6
5 NaN 1 9
6 NaN 9 5
因此,跨列均值(axis=0)df.mean给出了如下结果:
x 3
y 5
z 7
但是如果我想按列删除缺少的值,如
y
0 3
1 4
2 5
3 6
4 7
5
我有一个有几个列的Pandas数据框架,其中一些列包含分类条目。我使用因式分解()将这些条目转换(或编码)为数值,如下所示:
for column in df.select_dtypes(['category']):
df[column] = df[column].factorize(na_sentinel=None)[0]
这些列有几个NaN条目,所以我让na_sentinel=None保留NaN条目。但是,NaN值没有被保留(它们被转换为数字条目),这不是我想要的。我的熊猫版是1.3.5。我遗漏了什么吗?
当我使用执行两个矩阵之间的相关时,我得到了NaNs,但我想忽略它们,我在一些MATLAB论坛上读到,用nanmean获得的方法替换NaNs是一个很好的替代方法。所以我执行了下面的代码,但我的结果中仍然有NaNs。为什么会发生这种情况?
cor1nan=nanmean(correlations1);
mod1cor=isnan(correlations1);
for z=1:264
for a=1:264
if(mod1cor(a,z)==1)
correlations1(a,z)=cor1nan(z);
end
end
end
我只是注意到cor1nan中的一些值本身就是
我有一张图像,我想要裁剪一个点周围的圆形感兴趣区域。我在MATLAB中做了以下工作:
vessel=imread('vessel.jpg');
imshow( vessel)
t = 0:pi/20:2*pi;
xc=230; % point around which I want to extract/crop image
yc=79;
r=20; %Radium of circular region of interest
xcc = r*cos(t)+xc;
ycc = r*sin(t)+yc;
roimaskcc
我有一个数据集:
ID Amt TYPE
1 1000 A
2 200 NA
3 1100 S
我需要计算每种类型在特定范围内发生的次数:
Range A_Count NA_Count S_Count
0-1000 1 1 0
1001-2000 0 0 1
我是类推得到这个,这样我就可以用这个数据绘制一个图,范围为x轴,计数为y轴。我怎样才能做到这一点?
我有下面的协方差矩阵
a b c d
a 0.0161 0.0009 0.0008 0.0000001
b 0.0009 0.0163 NaN 0.0006
c 0.0008 NaN 0.0209 NaN
d 0 0.0006 NaN 0.0077
我想过滤这个矩阵,这样就只剩下那些非NaN的列和行了,有没有一种方法可以做到这一点,而不是嵌套循环?
所以这应该变成
a b d
a 0.0161 0.0009 0.0
我的每一行数据中的最后两个实数都是用误差测量的。我想用np.NAN替换它们。实数的数目随行而异(也就是说,每行已经有不同数量的NAN)。列标题表示测量号,索引是一个在单元格中的实验trial.Values,等于测量读数。有些试验的测量读数比其他的要多;因此,有些行的测量读数比其他的多。下面的代码创建了一个类似于我的数据框架。
import pandas as pd
import numpy as np
data = np.array(([1,2,3,4,5,2,np.NaN],
[2,2,3,2,3,np.NaN,np.NaN],[4,4,5,1,np.NaN,np.
我有一个名为“main_df”的数据文件,其中包含3列X、Y、Z。
X Y Z
NaN NaN ZVal1
NaN NaN ZVal2
XVal1 NaN NaN
NaN YVal1 NaN
每一列都带有特定类型的数据( X,Y,Z),因此如果某一行的X列中有数据,则Y/Z列中将没有数据,因为它不是X类型的。
如果将所有3列组合在一起,它们就会“互相滑动”,这样你就会得到所有的值。
我如何将这3列组合成第4列,这样就可以忽略NaN值,并且只得到该行的3列中存在的任何单个值?
预期产出:
X
我使用datetimeindex从dataframe中选择行。选择时,我希望自动排除那些只有零值的列。
我想出了一个做测试的列表理解。
test = [data[i].isin([1]).any(0) for i in data.columns]
现在如何在数据帧的切片上应用此测试?
data[test]
给我一个ValueError:项目长度错误。
谢谢!
我需要根据条件复制和粘贴列的前一个非空值。我需要用最有效的方法来做,因为行数是几百万。使用for loop将在计算上花费很大。
因此,如果有人能在这方面帮助我,我们将不胜感激。
|Col_A |Col_B |
|--------|--------|
|10.2.6.1| NaN |
| NaN | 51 |
| NaN | NaN |
|10.2.6.1| NaN |
| NaN | 64 |
| NaN | NaN |
| NaN | NaN |
|10.2.6.1| NaN |
根据该条件,每当Col
git status显示的情况如下
git status
# On branch icc-server-send-metric-values
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: java/