gpt4 book ai didi

python - 如何在 Python 中重写 DataFrame 中的列的字段?

转载 作者:行者123 更新时间:2023-12-04 03:30:26 25 4
gpt4 key购买 nike

我需要根据条件重写 DataFrame 中列的某些字段。

我有这个数据框:

    Vitamins    Sign
0 B -
1 C +
2 A NaN
3 Z 2
4 E +
5 I Expired
6 D + Severe Cases
7 K Expired+ Last Year
8 J +New

我需要根据这个条件重写两列:

  • 如果 'Sign' 列中的字段包含符号 '+',则应将其复制并粘贴到 'Vitamins' 列,在同一行,最后一个单词和符号之间没有任何空格。然后,应删除 'Sign' 列(该字段)中的符号 '+'

结果是这个数据框:

Vitamins    Sign
0 B -
1 C+ NaN
2 A NaN
3 Z 2
4 E+ NaN
5 I Expired
6 D Severe Cases
7 K+ Expired Last Year
8 J+ New

我为此编写了这段代码:

import pandas as pd
import numpy as np

data = {'Vitamins': ['B', 'C', 'A', 'Z', 'E', 'I', 'D', 'K', 'J'],
'Sign': ['-', '+', np.nan, 2, '+', 'Expired', '+ Severe Cases', 'Expired+ Last Year', '+New']}

df = pd.DataFrame (data, columns = ['Vitamins', 'Sign'])

mask = (df.loc[:, 'Sign'].str.contains('+', na=False, regex = False))
df['Vitamins'] = str(df.loc[mask, 'Vitamins']) + '+'
df['Sign'] = df.loc[mask, 'Sign'].str.replace('+', '')

但不幸的是它没有做它需要的事情。

如何解决?

非常感谢您的进阶!

最佳答案

使用numpy.where :

In [1552]: import numpy as np

In [1553]: df['Vitamins'] = np.where(df['Sign'].str.contains('+', na=False, regex = False), df['Vitamins'] + '+', df['Vitamins'])

In [1557]: df['Sign'] = df['Sign'].replace('+', np.nan).replace('\+', '', regex=True)

In [1558]: df
Out[1558]:
Vitamins Sign
0 B -
1 C+ NaN
2 A NaN
3 Z 2
4 E+ NaN
5 I Expired
6 D+ Severe Cases
7 K+ Expired Last Year
8 J+ New

关于python - 如何在 Python 中重写 DataFrame 中的列的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66984804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com