我有一个数据框
City hits
A 10
B 1
C 22
D 122
E 1
F 165
我想制作一个数据框,其中包含一个名为 Hit_ID 的列,其行是
A_1
A_2
etc.
A_10
B_1
C_1
C_2
etc.
D_124
D_125
E_1
我试过了
df['Hit_ID'] = df[['City','hits']].apply(lambda x:'_'.join(x.astype(str)),axis=1)
但这只是连接列。如何修改应用函数以获得所需的操作?
最佳答案
你需要:
#repeat index values by column hits
df = df.loc[df.index.repeat(df['hits'])].reset_index(drop=True)
#create counts
df['hits'] = df.groupby('City').cumcount() + 1
#concatenate columns
df['Hit_ID'] = df['City'] + '_' + df['hits'].astype(str)
print (df.head(20))
City hits Hit_ID
0 A 1 A_1
1 A 2 A_2
2 A 3 A_3
3 A 4 A_4
4 A 5 A_5
5 A 6 A_6
6 A 7 A_7
7 A 8 A_8
8 A 9 A_9
9 A 10 A_10
10 B 1 B_1
11 C 1 C_1
12 C 2 C_2
13 C 3 C_3
14 C 4 C_4
15 C 5 C_5
16 C 6 C_6
17 C 7 C_7
18 C 8 C_8
19 C 9 C_9
关于python - 连接数据框中的列并生成新 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46832972/