我有如下数据帧:
,VM,Storage Capacity MB,Memory Capacity MB,Powerstate,CPUs
0,abc1234,102400.0,4096,poweredOn,1
1,xyz1234,81920.0,4096,poweredOn,1
2,abc1234,,4096,poweredOff,1
3,xyz1234,,4096,poweredOff,1
具有NaN值的行需要替换为非零的第一个匹配。输出需要如下:
,VM,Storage Capacity MB,Memory Capacity MB,Powerstate,CPUs
0,abc1234,102400.0,4096,poweredOn,1
1,xyz1234,81920.0,4096,poweredOn,1
2,abc1234,102400.0,4096,poweredOff,1
3,xyz1234,81920.0,4096,poweredOff,1
使用fillna.method('lasfil')
并不能真正替换为第一个匹配
import pandas
file2 = pd.read_csv(r'c:\temp\pd_powerstate_new_south.csv')
file2 = pd.read_csv(r'c:\temp\pd_powerstate_new_south.csv')
file1.set_index('VM')
file2.set_index('VM')
merged_data = pd.merge(left = file1, right = file2, how = 'outer')
merged_data.fillna("some custom
method").to_csv(r'c:\temp\mergeddata.csv')
实际结果如下:
,VM,Storage Capacity MB,Memory Capacity MB,Powerstate,CPUs 0,abc1234,102400.0,4096,poweredOn,1
1,xyz1234,81920.0,4096,poweredOn,1
2,abc1234,102400.0,4096,poweredOff,1
3,xyz1234,81920.0,4096,poweredOff,1
很明显,你想通过虚拟机来实现,所以你错过了一个
groupby
。它也是一种正向填充(ffill
)(类似于在Excel中向下拖动公式的方式)结果:
不确定您的数据帧有多少个非NA值。如果只有几个,可以尝试df.ffill().bfill()或df.bfill().ffill()的组合,只取找到的非na值并向前/向后扩展
如果有许多非na值,我建议通过在列中循环来解决:
相关问题 更多 >
编程相关推荐