【发布时间】:2018-01-16 08:00:20
【问题描述】:
我正在尝试研究我的数据中具有零值的概率,并且我开发了一个代码,当另一列数据为零时输出一列数据的值,这正是我所需要的。但是,对于我的 577by29 数据帧中的所有其他 28 列而言,必须对每一列都这样做是很困难的,所以我决定创建一个 for 循环来为我这样做:
import numpy as np
import pandas as pd
allchan = pd.read_csv('allchan.csv',delimiter = ' ')
allchanarray = np.array(allchan)
dfallchan = pd.DataFrame(allchanarray,range(1,578),dtype=float)
y = pd.DataFrame()
x = pd.DataFrame()
for n in range(0,29):
x[n] = dfallchan[(dfallchan[0]>0) & (dfallchan[n]==0)][0]
y[n] = x[n].count()
x.to_excel('n.xlsx', index=False, sheet_name='ValForOtherZero')
y.to_excel('v.xlsx', index=False, sheet_name='CountOfZeroVlas')
问题是由于某种原因循环正确地通过了线路:
x[n] = dfallchan[(dfallchan[0]>0) & (dfallchan[n]==0)][0]
y[n] = x[n].count()
但是对于第二个条件它重复了 n=6 的值:
(dfallchan[n]==0)
代码的输出应该返回第一个通道的不同值,因为零在我的输入文件中随机分布,但我的输出对于数据直到第 6 列是正确的 - 因为我的列 (0-5) 应该为空 - 它重复所有其他列的输出! 输出: output 1
您可以看到代码正确循环,因为输出数据帧有 n=29 列,但不适用于上面指定的条件。
请帮忙,谢谢!
【问题讨论】:
-
这不是错误,而是警告。在这里查看更多信息:stackoverflow.com/questions/20625582/…
-
我已经阅读了警告,它表明变量 x 的类型不合适......
-
我现在遇到另一个问题并已编辑问题!
标签: python arrays for-loop dataframe