首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据不同的列值条件从列值生成数组

根据不同的列值条件从列值生成数组
EN

Stack Overflow用户
提问于 2018-01-31 16:37:34
回答 2查看 47关注 0票数 0

我有以下数据集。

  1. 10
  2. 20
  3. 30
  4. 40
  5. 50
  6. 60
  7. 70
  8. 80
  9. 90
  10. 100

我的目的是将第2栏中的数值替换为两个连续数值的平均值,当第1栏的数值小于5而大于6时。准确地说,在<5范围内,第1栏的数值是1、2、3和4,相应的第2栏的数值是10、20、30、40。所以,我想取平均值(10,20)=15和(30,40)=35。对于第1列,我想在范围>6的范围内做同样的操作,取相应的第2列值的平均值(70,80)=75和(80,90)=95。当第1列值不属于这两个范围(5和6)和相应的第2列值(50和60)时,我将不取第2列值的平均值,最后根据这三种条件创建列2值的数组。

我尝试了以下方法:

代码语言:javascript
复制
import numpy as np
import pandas as pd
data= pd.read_table('/Users/Hrihaan/Desktop/Data.txt', dtype=float, header=None, sep='\s+').values
t=data[:,0]
df = pd.DataFrame({"x":t, "y":data[:,1]})
x=np.where(t<=4,data[:,1],np.nan)
x_1=np.nanmean(x.reshape(-1, 2), axis=1)
y=np.where((df.x>4)&(df.x<7), df.y,np.nan)
z=np.where(t>6,data[:,1],np.nan)
z_1=np.nanmean(z.reshape(-1, 2), axis=1)
A=np.concatenate((x_1,y,z_1), axis=0)
print(A)

我得到了以下输出:15.35。南50。60。南南7595.

我的预期产出是:15.35。50。60。75。95.

任何关于如何在我的代码中绕过np.nan的帮助都会很有帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-31 18:49:12

我真的很难在这里看到你更大的概念。对于您非常具体的问题,这样做是可行的:

代码语言:javascript
复制
import pandas as pd
#read your file
data= pd.read_table('test.txt', dtype = float, delim_whitespace = True, names = ["x", "y"])
#define rows you want to exclude
exclude_rows = set([5, 6])
#create new column with rolling mean of two rows
data["mean"] = data["y"].rolling(2).mean()
#overwrite rolling mean, when row should be excluded from calculating the average
data["mean"][data["x"].isin(exclude_rows)] = data["y"]
#filter data
A = data["mean"][(data["x"].isin(exclude_rows)) |  (data["x"] % 2 == 0)]

但是,如果要排除例如x=4和6,那么预期的输出是什么呢?然后你有几个奇异值,你没有给出任何指示,它们在平均过程中应该发生什么。

票数 1
EN

Stack Overflow用户

发布于 2018-01-31 17:02:04

这能做你想做的

代码语言:javascript
复制
a=np.vstack((np.arange(1,11),np.arange(10,110,10))).T
b=(a[:-1,1]+a[1:,1])/2
indL=np.argmax(a[:,0]>5)-1
indH=np.argmax(a[:,0]>6)
out=np.hstack((b[:indL:2],a[indL:indH,1],b[indH::2]))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48547081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档