考慮一個帶有 2 列的資料框以方便使用。第一列label對于資料集中的某些觀察具有相同的值。
示例資料集:
import pandas as pd
data = [('A', 28),
('B', 32),
('B', 32),
('C', 25),
('D', 25),
('D', 40),
('E', 32) ]
data_df = pd.DataFrame(data, columns = ['label', 'num'])
對于 column label,我想找到具有相似值的行。并將其值轉換為value_counter如下所示:
label num
A 28
B_1 32
B_2 32
C 25
D_1 25
D_2 40
E 32
我嘗試使用 pandas groupby,但我不知道transform我必須使用哪個。
謝謝您的幫助。
uj5u.com熱心網友回復:
您可以使用:
s = data_df.groupby('label').cumcount() 1
data_df['label'] = np.where(data_df.duplicated(subset='label', keep=False),
data_df['label'] '_' s.astype(str), data_df['label'])
OUTPUT
label num
0 A 28
1 B_1 32
2 B_2 32
3 C 25
4 D_1 25
5 D_2 40
6 E 32
uj5u.com熱心網友回復:
您可以創建一個空的dictionary,您可以將其附加到您的標簽及其計數(keys和values)。然后根據標簽是新的還是存在的,您可以增加它的值或完整地回傳它。
最后一步是使用這個 newlist作為一個新的標簽列:
labels = data_df['label'].tolist()
new_labels = []
label_c = {}
# iterate through your labels list
for val in labels:
if val not in label_c: # if label not the new label list
label_c[val] = 0 # add it to dictionary
new_labels.append(val) # add it to the output as is
else: # if it's not new
label_c[val] = 1 # increment its count
new_labels.append(f"{val}_{label_c[val]}") # add it to the output along with its count
data_df['label'] = new_labels
列印回來:
>>> print(data_df)
label num
0 A 28
1 B 32
2 B_1 32
3 C 25
4 D 25
5 D_1 40
6 E 32
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/390996.html
上一篇:無法安裝行為
