簡體   English   中英

如何在 Pandas DataFrame 列中設置值等於基於另一個 DataFrame 的值

[英]How to set values in a Pandas DataFrame Column equal to values based on another DataFrame

我有兩個 DataFrame - Final_df 和 Cust_LCK。 在 Final_df DataFrame 中,我有一列名為“Cust Group”的空白值和另一列具有唯一帳號 - “Acct #”(兩個數據框之間的鏈接)。 另一個 DataFrame (Cust_LCK) 有一個標題為“Acct #”的列,其中包含唯一的帳號,而“Cust Group”則包含帳號所屬的客戶組。

如何填寫 Final_df 與客戶組的空白?

您可以使用從Cust_LCKFinal_df列的pandas.Series.map()到 map 值。

import pandas as pd


df = pd.DataFrame({'A': [5, 6, 7, 8, 9], 'B': [1, 2, 3, 4, 5]})

Final_df = pd.DataFrame({
    'Acct#'     : range(0, 5),
})

Final_df['Cust Group'] = ''

Cust_LCK = pd.DataFrame({
    'Acct#'     : range(5, 0, -1),
    'Cust Group': range(10, 15)
})

Final_df['Cust Group'] = Final_df['Acct#'].map(Cust_LCK.set_index('Acct#')['Cust Group'])

如果Cust_LCK列的值有重復項,請僅使用pandas.DataFrame.drop_duplicates()保留其中一個:

Final_df['Cust Group'] = Final_df['Acct#'].map(Cust_LCK.drop_duplicates(subset['Acct#']).set_index('Acct#')['Cust Group'])

如果Cust_LCK中的重復行具有不同的Cust Group值,請將它們與pandas.DataFrame.merge()一起保存:

Final_df = Final_df.merge(Cust_LCK[['Acct#', 'Cust Group']], how='left', on=['Acct#']).drop('Cust Group_x', axis=1).rename(columns={'Cust Group_y': 'Cust Group'})
import pandas as pd


df = pd.DataFrame({'A': [5, 6, 7, 8, 9], 'B': [1, 2, 3, 4, 5]})

Final_df = pd.DataFrame({
    'Acct#'     : range(0, 5),
})

Final_df['Cust Group'] = ''

print(Final_df)

'''
   Acct# Cust Group
0      0
1      1
2      2
3      3
4      4
'''

Cust_LCK = pd.DataFrame({
    'Acct#'     : [4, 4, 3, 2, 1],
    'Cust Group': range(10, 15)
})
Cust_LCK['Group'] = ''


print(Cust_LCK)

'''
   Acct#  Cust Group Group
0      4          10
1      4          11
2      3          12
3      2          13
4      1          14
'''

Final_df = Final_df.merge(Cust_LCK[['Acct#', 'Cust Group']], how='left', on=['Acct#']).drop('Cust Group_x', axis=1).rename(columns={'Cust Group_y': 'Cust Group'})

print(Final_df)

'''
   Acct#  Cust Group
0      0         NaN
1      1        14.0
2      2        13.0
3      3        12.0
4      4        10.0
5      4        11.0
'''

如果您不想在合並后刪除和重命名列。 合並前刪除Final_dfCust Group列。

暫無
暫無

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

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