簡體   English   中英

在連接的 dataframe 上使用 loc

[英]Using loc on concated dataframe

再會。 我正在嘗試做一件相對簡單的事情,但不知道出了什么問題。 我有兩個數據框:df 和 df2 每個 dataframe 的“帳戶”列包含一個客戶端的 5 個符號代碼和一個帶有全名的“客戶端名稱”。 我想遍歷“帳戶”的唯一值並獲取相應的“客戶名稱”值。 下面的代碼完美運行:

for x in df['Account'].unique():

    worksheet.write(row, 4, df.loc[df[df['Account'] == x].index[0], 'Client Name'])

但是后來我不得不合並 2 個數據框,所以我使用了 concat

modified_df = pd.concat([pd.concat([df['Account'], df2['Account']]),
                 pd.concat([df['Client Name'], df2['Client Name']])], axis=1)

令人驚訝的是,當我用 df 代替 modified_df 時,它停止了工作。 Pycharm 用建議突出顯示“loc”:“class 'type' 的未解析屬性引用'loc'

當我運行代碼時出現以下錯誤:'TypeError: cannot convert the series to class'float''

我檢查了,df 和 modified_df 都是 pandas dataframe class

以下是示例數據框

import pandas as pd
import numpy as np

df = pd.DataFrame(np.array([['A', 'Company A'], ['B', 'Company B'], ['A', 'Company A']]),columns=['Account', 'Client Name'])
df2 = pd.DataFrame(np.array([['C', 'Company C'], ['B', 'Company B'], ['A', 'Company A']]),columns=['Account', 'Client Name'])
modified_df = pd.concat([pd.concat([df['Account'], df2['Account']]),
                     pd.concat([df['Client Name'], df2['Client Name']])], axis=1)

我期望得到的是一個列表“A公司,B公司,C公司”

更新玩弄上面的示例數據,我注意到連接的 df 的索引有些不是唯一的。 我有兩組 (0, 1, 2) 指標...猜測這是我問題的根源。

發現原因是重復的指標,所以我只是重置它們,一切正常

modified_df = pd.concat([pd.concat([df['Client Name'], df2['Client Name']]),
                     pd.concat([df['Account'], df2['Account']])], axis=1)
modified_df = pd.concat([modified_df], ignore_index=True)

如果問題是重復索引,為什么不獲取Account == x的第一行:

for x in df['Account'].unique():
    worksheet.write(row, 4, df.loc[df.Account == x, 'Client Name'].iloc[0])

看來您的 df2[Account] 中可能有一個無法轉換為浮點數的值。

暫無
暫無

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

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