python pandas用' prefix' +各自的索引编号

发布于 2025-01-22 03:30:18 字数 741 浏览 0 评论 0原文

我想填充对象列中的缺失值,以替换为“ Any_fixed_prefix” +'_' +'相应索引'。

dataFrame看起来像:

逻辑后所需的数据框

应用 ://i.sstatic.net/nchxo.png“ alt =“在此处输入图像说明”>

我尝试了几种方法,但不像fillnamap那样工作方法:

df['col1'].fillna(str(df.index))

df['col1].fillna('PRE_' + str(df.index))

DDL生成数据框:

df = pd.DataFrame({'col1': ['A', 'B', np.nan , np.nan ,'E'],
                   'col2': ['S4', 'S8', 'AA', 'EE', 'T4'],
                   'col3': [2017, 2019, 2021, 2014, 2011]})

I want to fill missing values from object column to be replaced with 'any_fixed_prefix' + '_' + 'corresponding index'.

Dataframe look like:

enter image description here

Required Dataframe after applying logic:

enter image description here

I tried several ways, but doesn't work like fillna or map method:

df['col1'].fillna(str(df.index))

or

df['col1].fillna('PRE_' + str(df.index))

DDL to generate DataFrame:

df = pd.DataFrame({'col1': ['A', 'B', np.nan , np.nan ,'E'],
                   'col2': ['S4', 'S8', 'AA', 'EE', 'T4'],
                   'col3': [2017, 2019, 2021, 2014, 2011]})

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我很OK 2025-01-29 03:30:18

如果您只想在col1中填写NAN值,则可以使用fillna

df['col1'] = df['col1'].fillna('PRE_' + df.index.to_series().astype(str))

如果要在所有对象dtype列中填写NAN值,则可以使用umass在轴上填充索引(AS系列)。这将以相同的方式填充NAN值col2

tmp = df.select_dtypes('object')
df = tmp.mask(tmp.isna(), 'PRE_' + tmp.index.to_series().astype(str), axis=0).combine_first(df)

输出:

    col1 col2  col3
0      A   S4  2017
1      B   S8  2019
2  PRE_2   AA  2021
3  PRE_3   EE  2014
4      E   T4  2011

If you only want to fill NaN values in col1, you could use fillna:

df['col1'] = df['col1'].fillna('PRE_' + df.index.to_series().astype(str))

If you want to fill NaN values in all object dtype columns, you could use mask on axis to fill in with the index (as Series). This will fill NaN values col2 in the same way:

tmp = df.select_dtypes('object')
df = tmp.mask(tmp.isna(), 'PRE_' + tmp.index.to_series().astype(str), axis=0).combine_first(df)

Output:

    col1 col2  col3
0      A   S4  2017
1      B   S8  2019
2  PRE_2   AA  2021
3  PRE_3   EE  2014
4      E   T4  2011
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文