断言 pandas 数据帧记录的附加参数
assert additional parameter to pandas dataframe records
我得到了一个相当大的 pandas 数据框(5k 行,30 列)。我需要按照以下说明进行操作。我试过了
pseudocode
for i in main_df.iterrows():
for j in sub_df.iterrows():
if j == part of i:
i["sub_uid"] = j["sub_uid"]
但这似乎不起作用,或者对我来说太难调试了。 (也非常耗时)
我基本上没有想法,希望得到你们的帮助:)
main_df:
v1 v2 vx3 vx4
1 a b h j
2 a b n p
3 a c r g
4 d e p j
sub_df: take only part of main_df columns, drop duplicates. Assign uids for all combinations of v1 v2 parameters
v1 v2 sub_uid
1 a b 01
2 a c 02
3 d e 03
now back to main_df: add a column for sub_uids. For each record, determine sub_uid using sub_df
v1 v2 vx3 vx4 sub_uid
1 a b h j 01
2 a b n p 01
3 a c r g 02
4 d e p j 03
使用Groupby.ngroup
直接将sub_uid
赋值给main_df
而不创建sub_df
:
In [2473]: df['sub_uid'] = df.groupby(['v1', 'v2']).ngroup().add(1)
In [2474]: df
Out[2474]:
v1 v2 vx3 vx4 sub_uid
1 a b h j 1
2 a b n p 1
3 a c r g 2
4 d e p j 3
我得到了一个相当大的 pandas 数据框(5k 行,30 列)。我需要按照以下说明进行操作。我试过了
pseudocode
for i in main_df.iterrows():
for j in sub_df.iterrows():
if j == part of i:
i["sub_uid"] = j["sub_uid"]
但这似乎不起作用,或者对我来说太难调试了。 (也非常耗时)
我基本上没有想法,希望得到你们的帮助:)
main_df:
v1 v2 vx3 vx4
1 a b h j
2 a b n p
3 a c r g
4 d e p j
sub_df: take only part of main_df columns, drop duplicates. Assign uids for all combinations of v1 v2 parameters
v1 v2 sub_uid
1 a b 01
2 a c 02
3 d e 03
now back to main_df: add a column for sub_uids. For each record, determine sub_uid using sub_df
v1 v2 vx3 vx4 sub_uid
1 a b h j 01
2 a b n p 01
3 a c r g 02
4 d e p j 03
使用Groupby.ngroup
直接将sub_uid
赋值给main_df
而不创建sub_df
:
In [2473]: df['sub_uid'] = df.groupby(['v1', 'v2']).ngroup().add(1)
In [2474]: df
Out[2474]:
v1 v2 vx3 vx4 sub_uid
1 a b h j 1
2 a b n p 1
3 a c r g 2
4 d e p j 3