我从传感器得到数据。有些时候他们无缘无故地回到我身边!
在数据清理期间。我可以用这个blank string
Time IL1 IL2 IL3 IN kVA kW kWh
12463 2018-09-17 10:30:00 63.7 78.4 53.3 25.2 NaN NaN 2039676.0
12464 2018-09-17 11:00:00 64.1 78.6 53.5 25.4 NaN NaN 2039698.0
如何才能从
NaN
中取出df[df.isnull().values.any(axis=1)]
?然后我可以从其他行中找到
kVA and kW
的DataFrame
,并用它替换median
我的用例:
现在我必须读取文件并找到
kVA and KW
列的位置。这需要我的努力。所以我想通过替换列名上的硬代码来自动化这个过程。trdb_a2_2018_df = pd.read_csv(PATH + 'dpm_trdb_a2_2018.csv', thousands=',', parse_dates=['Time'], date_parser=extract_dt)
trdb_a2_2018_df = trdb_a2_2018_df.replace(r'\s+', np.nan, regex=True)
median_kVA = trdb_a2_2018_df['kVA'].median()
trdb_a2_2018_df = trdb_a2_2018_df['kVA'].fillna(median_kVA)
最佳答案
我相信你需要fillna
和median
:
df = pd.DataFrame({
'A':list('abcdef'),
'B':[4,5,4,5,5,np.nan],
'C':[7,np.nan,9,4,2,3],
'D':[1,3,5,7,1,0],
'E':[5,3,6,9,2,4],
'F':list('aaabbb')
})
print (df)
A B C D E F
0 a 4.0 7.0 1 5 a
1 b 5.0 NaN 3 3 a
2 c 4.0 9.0 5 6 a
3 d 5.0 4.0 7 9 b
4 e 5.0 2.0 1 2 b
5 f NaN 3.0 0 4 b
df1 = df.fillna(df.median())
print (df1)
A B C D E F
0 a 4.0 7.0 1 5 a
1 b 5.0 4.0 3 3 a
2 c 4.0 9.0 5 6 a
3 d 5.0 4.0 7 9 b
4 e 5.0 2.0 1 2 b
5 f 5.0 3.0 0 4 b
如果还需要在列中安装
NaN
s:m = df.isnull().any()
df.loc[:, m] = df.loc[:, m].fillna(df.loc[:, m].median())
备选方案:
cols = df.columns[df.isnull().any()]
df[cols] = df[cols].fillna(df[cols].median())
详细信息:
print (df.median())
B 5.0
C 4.0
D 2.0
E 4.5
dtype: float64
关于python - 当行为NaN时获取 Pandas 头,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53882610/