python - 用编号变量填充 DataFrame 上的空白 - Python Pandas
问题描述
我有一个格式的 DataFrame:
ID Theme Operation Volume
100 Jungle S3 Full
200 Desert S3 Full
302 Cavern S1 Empty
303 Swamp nan Full
400 Jungle S3 nan
600 Desert nan Empty
我想编写一个脚本,遍历空单元格并从“nan”重新分配它们,并用变量 NA_ 替换它们,其中 _ 是它们缺少多少变量的计数。所以我想要的输出是:
ID Theme Operation Volume
100 Jungle S3 Full
200 Desert S3 Full
302 Cavern S1 Empty
303 Swamp NA1 Full
400 Jungle S3 NA3
600 Desert NA2 Empty
当我尝试遍历 df 并识别 nan 值时,由于某种原因,以下内容不起作用。
count = 0
for col in df.colums:
for row in df[col]:
if row == float('nan'):
row = 'NA{}'.format(count)
count += 1
任何想法为什么?或者有没有更好的方法来做到这一点,我很难看到?
谢谢 :)
解决方案
连接您的列,将 NaN 替换为 NA_ (_ 替换为num
)并拆分您的列。最后将修改后的列覆盖到您的原始数据框:
tmp = df.reset_index().melt(id_vars='index', value_vars=['Operation', 'Volume'])
num = (tmp['value'].isna().cumsum()).astype(int)
tmp['value'] = tmp['value'].fillna('NA' + num.astype(str))
tmp = tmp.pivot(index='index', columns='variable', values='value')
df[tmp.columns] = tmp
>>> df
ID Theme Operation Volume
0 100 Jungle S3 Full
1 200 Desert S3 Full
2 302 Cavern S1 Empty
3 303 Swamp NA1 Full
4 400 Jungle S3 NA3
5 600 Desert NA2 Empty
推荐阅读
- react-native - 如何实现此功能
- macos - Cytoscape 卡塔利娜
- javascript - 如何从数组中仅获取经度和纬度
- spring - 找不到“org.springframework.data.redis.cache.RedisCacheManager”类型的bean
- php - 如何在模态数据表中获取隐藏的 ID 值
- xaml - 如何创建一个简单的布局,如具有背景和不透明度的 TextBlock?
- azure - Azure 数据工厂映射数据流 VS SSIS
- widget - 问题:在 Hybris 后台向导中单击图标时未打开
- c# - 如何处理 System.InvalidOperationException: DataReader.GetFieldType(13)?(再次)
- azure-sql-database - 如何将 azure 分析服务与 azure sql db 连接以获取 250GB 表大小数据?