簡體   English   中英

Python:在數據框中用相同的值填充特定列並刪除無用的行

[英]Python : Fill a specific column with the same value in a Dataframe and remove the rows useless

假設我有這個數據框:

data3 = ['ID','ID','','','','','']
data4 = [12,34,465,678,896,'','']
data5 = [8798,67,2313,'','','','']
data6 = [56,67,'','','','','']

df2 = pd.DataFrame(list(zip(data3,data4,data5,data6)),columns = ['Name','Data1','Data2','Data3'])
print(df2)

  Name Data1 Data2 Data3
0   ID    12  8798    56
1   ID    34    67    67
2        465  2313
3        678
4        896
5
6

我想用我們可以找到的始終相同的值填充“名稱”列,並且對於所有有值的行,並在沒有任何內容的地方刪除無用的行。 所以我想得到這個結果:

  Name Data1 Data2 Data3
0   ID    12   8798   56
1   ID    34   67     67
2   ID    465  2313
3   ID    678
4   ID    896

任何人都有一個想法可以有效地做到這一點?

謝謝

如果為空字符串,則使用DataFrame.replace ,而不是NaN s,然后使用DataFrame.dropna並通過ffill最后向前填充Name列中的缺失值:

df2 = df2.replace('', np.nan)

df2 = df2.dropna(how='all')
df2['Name'] = df2['Name'].ffill()
print(df2)
  Name  Data1   Data2  Data3
0   ID   12.0  8798.0   56.0
1   ID   34.0    67.0   67.0
2   ID  465.0  2313.0    NaN
3   ID  678.0     NaN    NaN
4   ID  896.0     NaN    NaN

您可以將df.replacedf.replace isna()all一起使用以在所有行中刪除Nan並使用ffill()填充Nan

In [2731]: df2 = df2.replace('', np.nan)
In [2756]: df2 = df2[~df2.isna().all(1)]
In [2733]: df2.Name = df2.Name.ffill()

In [2758]: df2
Out[2758]: 
  Name  Data1   Data2  Data3
0   ID   12.0  8798.0   56.0
1   ID   34.0    67.0   67.0
2   ID  465.0  2313.0    NaN
3   ID  678.0     NaN    NaN
4   ID  896.0     NaN    NaN

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM