使用 Pandas Pivot from list 消除几个 Nan

Eliminate several Nan using Pandas Pivot from list

我的 python 列表是:

prop = [('City', ' Python Town'),
 ('Property Type', ' Townhouse'),
 ('Square Feet', ' 1400'),
 ('Zip Code', ' 5000'),
 ('Bathrooms', ' 3'),
 ('Bedrooms', ' 3'),
 ('MLS', ' 0202'),
 ('Price1', ' 1295000'),
 ('Posted On', ' Dec 1, 2019')]

如果我索引它,一个例子是:

prop[0][0] = City
prop[0][1] = Python Town

转换为数据帧:

df = pd.DataFrame(prop)
df.pivot(columns = 0, values = 1)

得到这个:

    Bathrooms   Bedrooms    City         MLS    Posted On   Price1  Property Type   Square Feet Zip Code
0   NaN         NaN         Python Town NaN     NaN         NaN     NaN             NaN         NaN
1   NaN         NaN         NaN         NaN     NaN         NaN     Townhouse       NaN         NaN
2   NaN         NaN         NaN         NaN     NaN         NaN     NaN             1485        NaN
3   NaN         NaN         NaN         NaN     NaN         NaN     NaN             NaN         5000
4   3           NaN         NaN         NaN     NaN         NaN     NaN             NaN         NaN
5   NaN           3         NaN         NaN     NaN         NaN     NaN             NaN         NaN
6   NaN         NaN         NaN         0202    NaN         NaN     NaN             NaN         NaN
7   NaN         NaN         NaN         NaN     NaN         1295000 NaN             NaN         NaN
8   NaN         NaN         NaN         NaN     Dec 10, 2019NaN     NaN             NaN         NaN

如何消除行索引并使其成为 1 行,同时消除所有不必要的 Nan?

在枢轴之前,您可以对其进行转换,以获得如下输出:

df.T 
              0              1            2         3          4         5      6         7             8
0          City  Property Type  Square Feet  Zip Code  Bathrooms  Bedrooms    MLS    Price1     Posted On
1   Python Town      Townhouse         1400      5000          3         3   0202   1295000   Dec 1, 2019

您还可以将这些列设为 headers:

df1 = df.T
new_columns = df1.T[:][0]
df1 = df1[1:]
df1.columns = new_columns
df1 = df1.reset_index(drop=True)
df1 = df1.rename_axis(columns=None)
           City Property Type Square Feet Zip Code Bathrooms Bedrooms    MLS    Price1     Posted On
0   Python Town     Townhouse        1400     5000         3        3   0202   1295000   Dec 1, 2019

取决于您想要的格式。

我不会为这么小的东西使用 pivot。您可以在制作 dataFrame

之前或之后转置
>> import numpy as np
>> df = pd.DataFrame(np.transpose(prop))
>> print(df)

              0              1            2  ...      6         7             8
0          City  Property Type  Square Feet  ...    MLS    Price1     Posted On
1   Python Town      Townhouse         1400  ...   0202   1295000   Dec 1, 2019

如果要第一行作为索引:

>> df.columns = df.loc[0]
>> df.drop(0, axis=0, inplace=True)
>> df.reset_index(drop=True, inplace=True)
>> print(df)


           City  Property Type  ...   Price1        Posted On
0   Python Town      Townhouse  ...   1295000      Dec 1, 2019