簡體   English   中英

創建一個列,該列是每行中具有最大長度的字符串 - Pandas Dataframe

[英]Create a column which is string who has the max length within each rows - Pandas Dataframe

我有一個 pandas dataframe 像這樣:

d = { 'col1' : ['John', 'Mark Dupont', np.nan],
      'col2' : ['John Doe', 'Mark 40', 'Edith'],
      'col3' : ['John Doe 40', np.nan, 'Edith']}

df = pd.DataFrame(data = d)

我想要以下結果:

d = { 'col1' : ['John', 'Mark Dupont', np.nan],
      'col2' : ['John Doe', 'Mark 40', 'Edith'],
      'col3' : ['John Doe 40', np.nan, 'Edith'],
      'Name' : ['John Doe 40', 'Mark Dupont', 'Edith']}

在每一行中,同一個人有不同版本的姓名身份,一些隨機缺失值和一些列在一行中具有相同的值。

我想創建一個由每行的最大長度組成的列。 我想我必須使用: len().max()並以某種方式將其放入df.loc[ ]但我找不到正確的方法。

我找到了相關的帖子,但只有一整列: Find length oflongest string in Pandas dataframe column

選項 1:您可以簡單地將 NaN 替換為空字符串 '' 並找到一個最大值:

df = df.fillna('')
df['Name'] = df.max(axis=1)

選項 2:在找到最大值時使用 apply 並顯式跳過 NaN:

df['Name'] = df.apply(lambda x: max([l for l in x.values if not pd.isnull(l)], key=len), axis=1)

暫無
暫無

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

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