python - 如何在熊猫中使用fillna函数?
问题描述
我有一个数据框,其中包含三个电池的充电和放电序列:
Battery 1 Battery 2 Battery 3
0 32 3 -1
1 21 11 -31
2 23 27 63
3 12 -22 -22
4 -21 22 44
5 -66 6 66
6 -12 32 -52
7 -45 -45 -4
8 45 -55 -77
9 66 66 96
10 99 -39 -69
11 88 99 48
如果数字是负数,那么它会充电,如果它是正数,那么它会放电。所以我添加了所有数字行,然后尝试充电和放电顺序。
import pandas as pd
dic1 = {
'Battery 1': [32,21,23,12,-21,-66,-12,-45,45,66,99,88],
'Battery 2': [3,11,27,-22,22,6,32,-45,-55,66,-39,99],
'Battery 3': [-1,-31,63,-22,44,66,-52,-4,-77,96,-69,48]
}
df = pd.DataFrame(dic1)
bess = df.filter(like='Battery').sum(axis=1) # Adding all batteries
charging = bess[bess<=0].fillna(0) #Charging
discharging = bess[bess>0].fillna(0) #Discharging
bess['charging'] = charging #creating new column for charging
bess['discharging'] = discharging #creating new column for discharging
print(bess)
预期输出:
bess charging discharging
0 34 0.0 34.0
1 1 0.0 1.0
2 113 0.0 113.0
3 -32 -32.0 0.0
4 45 0.0 45.0
5 6 0.0 6.0
6 -32 -32.0 0.0
7 -94 -94.0 0.0
8 -87 -87.0 0.0
9 228 0.0 228.0
10 -9 -9.0 0.0
11 235 0.0 235.0
但不知何故,这fillna
不是填充 0 值并给出这个输出:
bess charging discharging
0 34 34
1 1 1
2 113 113
3 -32 -32
4 45 45
5 6 6
6 -32 -32
7 -94 -94
8 -87 -87
9 228 228
10 -9 -9
11 235 235
解决方案
在这里改变车道reindex
charging = bess[bess<=0].reindex(df.index,fill_value=0) #Charging
discharging = bess[bess>0].reindex(df.index,fill_value=0) #Discharging
推荐阅读
- python - 在 Android Emulator 中使用 Django 插入 React-Native 的最佳方法是什么?
- java - java.lang.VerifyError:堆栈映射与异常句柄中的不匹配
- c++ - Facing Segmentation fault 使用ffmpeg读取视频时,因为“pFormatCtx->streams[i]->codecpar”的地址是0x00
- javascript - 如何从firebase获取多个ID?
- css - 捆绑后缺少 Css 块 - ASP.Net Core MVC
- java - Checkstyle 报告缺少带有 @deprecated javadoc 标记的已弃用类的 javadoc 摘要
- azure - 您无权在 AzureDevops 中查看此目录或页面
- java - 有没有办法从网络拦截中隐藏应用程序网络调用
- python - 如何仅对一句话进行情感分析?
- python - seaborn clustermap 不会重新排列注释数据