python - 连接数据框中的列并生成新 ID

标签 python pandas

我有一个数据框

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/

相关文章:

python - Pandas DataFrame - 根据其他列分配 1,0 值

python - Plone 成员数据更新 : PropertiesUpdatedEvent not triggered

python - 编目词典列表

python - Python 中有类似 "void lambda"的东西吗?

python - 如何根据阈值对多列进行分组并在Python中创建新列

python - 使用开始日期和结束日期进行左连接

python - 如何使用Python删除csv文件中的双引号(")?

python - 以 3 为一组聚合数据框

python - 给定一个 Pandas 数据框,有没有一种简单的方法可以打印出生成它的命令?

python - 如何在特定条件下读取txt