簡體   English   中英

如何正確循環熊貓數據框?

[英]How can I loop correctly a pandas dataframe?

我有一個看起來像這樣的數據框:

在此處輸入圖片說明

for user in df_enlaces['CorreoElectronico'].values:

  to_mail=(df_enlaces.set_index('CorreoElectronico').loc[user].index[0])

  print(to_mail, df_enlaces.set_index('CorreoElectronico').loc[user]['Enlace'])

上面代碼的輸出是:

example1@mail.com CorreoElectronico
example1@mail.com    link1
example1@mail.com    link2
Name: Enlace, dtype: object
example1@mail.com CorreoElectronico
example1@mail.com    link1
example1@mail.com    link2
Name: Enlace, dtype: object
example2@mail.com CorreoElectronico
example2@mail.com    link3
example2@mail.com    link4
example2@mail.com    link5
Name: Enlace, dtype: object
example2@mail.com CorreoElectronico
example2@mail.com    link3
example2@mail.com    link4
example2@mail.com    link5
Name: Enlace, dtype: object
example2@mail.com CorreoElectronico
example2@mail.com    link3
example2@mail.com    link4
example2@mail.com    link5
Name: Enlace, dtype: object

然而,它是重復的。 循環時我做錯了什么。 我只想將用戶電子郵件與其在列 ['Enlace'] 中的鏈接相匹配。 所需的輸出是:

example1@mail.com    link1
example1@mail.com    link2
example2@mail.com    link3
example2@mail.com    link4
example2@mail.com    link5

嘗試這個

for user in df_enlaces['CorreoElectronico'].unique():
    ....

您正在遍歷CorreoElectronico列中的每個值,然后當您執行.loc它會拉出與該用戶匹配的每一行(並且有幾個)

看起來這應該可以解決問題:

users = ['user1', 'user1', 'user2', 'user2', 'user3']
links = ['link1', 'link2', 'link3', 'link4', 'link5']
df = pd.DataFrame({'user':users,'link':links})

for index, row in df.iterrows():
    print(row['user'], row['link'])

至少當您只想從數據框中的每一行打印用戶和鏈接時是這樣嗎? 這輸出:

user1 link1
user1 link2
user2 link3
user2 link4
user3 link5

正如我想的那樣,您想要:

  • 迭代df_enlaces行,
  • 從每一行打印電子郵件地址 ( CorreoElectronico ) 和鏈接 ( Enlace )。

為此,請使用以下循環:

for _, row in df_enlaces.iterrows():
    print(f'{row.CorreoElectronico}    {row.Enlace}')

暫無
暫無

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

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