我正在嘗試標記以下資料框中每個重復項的索引號。
Column_A
0 Kitten
1 Kitten
2 Judy
3 Lamb
4 Momo
5 Judy
我想要的新資料框如下。如您所見,標記了具有多個的專案(例如“Judy”)。
Column_B Column_A
0 Kitten_1 Kitten
1 Kitten_2 Kitten
2 Judy_1 Judy
3 Lamb_1 Lamb
4 Momo _2 Momo
5 Judy_2 Judy
我的代碼如下。
import pandas as pd
# My dataframe
data = {'Column_A':['Kitten','Kitten','Judy','Lamb','Momo','Judy']}
df = pd.DataFrame(data)
df = df.sort_values("Column_A", axis = 0, ascending = False)
df_list = df['Column_A'].tolist()
df_list.sort()
new_df_list = list(set(df_list))
new_list = []
for k in new_df_list:
ori_list = df[df["Column_A"] == k ]['Column_A'].tolist()
number = len(ori_list)
for n in range(number):
new_list.append(k '_' str(n 1))
print(k '_' str(n 1))
print(len(new_list))
new_list.sort(reverse=True)
new_DF=pd.DataFrame(new_list, columns = ['Column_B'])
final_df = pd.concat([new_DF,df],axis=1)
print(final_df)
但是,輸出如下,這是亂序的。
Column_B Column_A
0 Momo_1 Kitten
1 Lamb_1 Kitten
2 Kitten_2 Judy
3 Kitten_1 Lamb
4 Judy_2 Momo
5 Judy_1 Judy
請幫我解決這個問題。
uj5u.com熱心網友回復:
嘗試這個:
out = (df.Column_A.str.cat((df.groupby('Column_A')
.cumcount() 1).astype('str'), sep='_')
.rename('Column_B')
.to_frame()
.join(df))
print(out)
>>>
Column_B Column_A
0 Kitten_1 Kitten
1 Kitten_2 Kitten
2 Judy_1 Judy
3 Lamb_1 Lamb
4 Momo_1 Momo
5 Judy_2 Judy
uj5u.com熱心網友回復:
首先創建您的資料框:
import pandas as pd
mylist = ['Kitten', 'Kitten', 'Judy', 'Lamb', 'Momo', 'Judy']
df=pd.DataFrame()
df['Column_A'] = mylist
然后創建一個my_index填充了的新列:
df['my_index'] = 1
然后,您可以遍歷中的唯一名稱Column_A并計算my_index每個結果資料幀中索引的累積總和df[df.Column_A==name]。以這種方式求和的索引將保存到名為 的新列label中。
list_of_series = []
for name in df.Column_A.unique():
list_of_series.append(df[df.Column_A==name]['my_index'].cumsum())
output_series = pd.concat(list_of_series)
df['label']= output_series
然后只需將名稱與相應的字串Column_B相加即可創建:Column_Alabel
df['Column_B'] = df['Column_A'].astype('str') '_' df['label'].astype(str)
df.drop(columns=['my_index', 'label'])
這將回傳以下輸出:
Column_A Column_B
0 Kitten Kitten_1
1 Kitten Kitten_2
2 Judy Judy_1
3 Lamb Lamb_1
4 Momo Momo_1
5 Judy Judy_2
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/530716.html
標籤:Python熊猫数据框
