Python 3.x 清理数据帧中的数据
我在熊猫数据框中有类似于以下内容的数据:Python 3.x 清理数据帧中的数据,python-3.x,pandas,Python 3.x,Pandas,我在熊猫数据框中有类似于以下内容的数据: Address1 listboro:"Manhattan" listprice:1000000 listzip:"10001" Address2 listprice:950000 listzip:"11205" listboro:"Brooklyn" 我想创建一个新的数据帧,如下所示: Address listboro listprice listzip Address1 Manhattan 1000000 10001 Ad
Address1 listboro:"Manhattan" listprice:1000000 listzip:"10001"
Address2 listprice:950000 listzip:"11205" listboro:"Brooklyn"
我想创建一个新的数据帧,如下所示:
Address listboro listprice listzip
Address1 Manhattan 1000000 10001
Address2 Brooklyn 950000 11205
原始数据帧存在两个问题:
Address1 listboro:"Manhattan" listprice:1000000 listzip:"10001"
Address2 listprice:950000 listzip:"11205" listboro:"Brooklyn"
我想使用所描述的
startswith
方法和所描述的extraction
方法,但数据列不一致的事实让我很反感。我不知道如何在不重建新数据帧的情况下对数据帧每行中的值进行排序。方法:对numpy
中的每一行进行排序,将它们构建到一个新的数据框中,并使用Series.str.extract
提取数据字段:
# Example DataFrame
0 1 2 3
0 Address1 listboro:"Manhattan" listprice:1000000 listzip:"10001"
1 Address2 listprice:950000 listzip:"11205" listboro:"Brooklyn"
# Copy values to numpy array, sort each row, and re-build the DataFrame
a = df.values
a.sort(axis=1)
df = pd.DataFrame(a)
df
0 1 2 3
0 Address1 listboro:"Manhattan" listprice:1000000 listzip:"10001"
1 Address2 listboro:"Brooklyn" listprice:950000 listzip:"11205"
# Assign names to columns
df.columns = ['Address', 'listboro', 'listprice', 'listzip']
# Extract data fields
df['listboro'] = df['listboro'].str.extract('\"(.*)\"')
df['listprice'] = df['listprice'].str.extract('\:(.*)').astype(int)
# Do not convert extracted ZIP codes from str to int, because
# some ZIP codes start with 0
df['listzip'] = df['listzip'].str.extract('\"(.*)\"')
df
Address listboro listprice listzip
0 Address1 Manhattan listprice:1000000 10001
1 Address2 Brooklyn listprice:950000 11205
如果可能的话,请提供数据帧的所有列的实际
df.head()
?