首页 > 解决方案 > 在同一行的数据框中对齐值

问题描述

我的数据正在填充不同的行并创建 NaN 值。不确定为什么行不对齐。

#Creating Dataframe
dfitems = pd.DataFrame(columns=['item_id','coverage_id','area_peril_id','vulnerability_id','group_id'])

#Populating columns
dfitems = dfitems.append({'item_id': 1}, ignore_index=True)
dfitems = dfitems.append({'coverage_id': 1}, ignore_index=True)
dfitems = dfitems.append({'area_peril_id': dropdown_property.value[-1]}, ignore_index=True)
dfitems = dfitems.append({'group_id': 1}, ignore_index=True)
dfitems = dfitems.append({'vulnerability_id': vulnerability.value[-1]}, ignore_index=True)

#Removing .0 with regex 
dfitems['vulnerability_id'] = dfitems['vulnerability_id'].astype(str).replace('\.0', '', regex=True)
dfitems['area_peril_id'] = dfitems['area_peril_id'].astype(str).replace('\.0', '', regex=True)
dfitems['coverage_id'] = dfitems['coverage_id'].astype(str).replace('\.0', '', regex=True)
dfitems['item_id'] = dfitems['item_id'].astype(str).replace('\.0', '', regex=True)
dfitems['group_id'] = dfitems['group_id'].astype(str).replace('\.0', '', regex=True)

#Drop Nan values
dfitems['item_id'] = dfitems['item_id'].astype(str).replace('nan', '', regex=True)
dfitems['coverage_id'] = dfitems['coverage_id'].astype(str).replace('nan', '', regex=True)
dfitems['area_peril_id'] = dfitems['area_peril_id'].astype(str).replace('nan', '', regex=True)
dfitems['vulnerability_id'] = dfitems['vulnerability_id'].astype(str).replace('nan', '', regex=True)
dfitems['group_id'] = dfitems['group_id'].astype(str).replace('nan', '', regex=True)

https://i.imgur.com/RR1nMOj.jpg ['当前输出']

我希望数据的输出都在同一行。

标签: pandasdataframeindexingappend

解决方案


我同意过于复杂。为什么要将所有更改应用到每一列而不是一次应用到整个数据框?

下面的代码应该与您的代码相同,但所有结果都将在 1 行

import pandas as pd
# Creating Dataframe & Populating columns 
data = {'item_id': [1], 'coverage_id': [4], 'area_peril_id': [dropdown_property.value[-1]],
        'group_id': [1], 'vulnerability_id': vulnerability.value[-1]
       }
df = pd.DataFrame(data)

#Removing .0 with regex 
df.astype(str).replace('\.0', '', regex=True, inplace=True)

#Drop Nan values
df.astype(str).replace('nan', '', regex=True, inplace=True)

推荐阅读