我想根据Python中另一个条件创建一个新列。更具体地说,我在数据框中的其中一列是:
Kilos:
1. 8.0
2. 16.0
3. 12.0
4. 10.0
5. 5.0
...
我希望新列基于此列,并且每当您在kilos
列中找到千克为8.0的行时,新列的行将写为'X2 + parts'并且当列为16.0时,新列的行将写为“ X8 + parts”,对于其他列,我不在乎。它们可以为空白或其他任何内容。
答案 0 :(得分:1)
在下面的示例中,您将创建一个值映射字典(valmap
),该字典将用于将您的8.0
和16.0
值映射到所需的文本。
import pandas as pd
# Create dataset.
data = {'Kilos': [8.0, 16.0, 12.0, 10.0, 5.0]}
df = pd.DataFrame(data)
# Create a value map dict for mapping specific values.
valmap = {8.0: 'X2 + parts', 16.0: 'X8 + parts'}
# Apply the value map into a new column.
df['Text'] = df['Kilos'].map(valmap)
# Show the results.
print(df)
Kilos Text
0 8.0 X2 + parts
1 16.0 X8 + parts
2 12.0 NaN
3 10.0 NaN
4 5.0 NaN
希望这可以帮助您指出正确的方向。
答案 1 :(得分:0)
您可以使用np.select()
。创建条件并将它们以及每个条件所需的结果填充到方法中。
下面是您的初始数据框,然后是np.select()
的条件和使用:
df=pd.DataFrame({'kilos':[8.0, 16.0, 12.0, 10.0, 5.0]})
df
kilos
0 8.0
1 16.0
2 12.0
3 10.0
4 5.0
kilos_8 = df['kilos']==8 #condition 1
kilos_16 = df['kilos']==16 #condition 2
df['new_col']=np.select([kilos_8, kilos_16],
['X2 + parts', 'X8 + parts'],
default=np.nan)
df
kilos new_col
0 8.0 X2 + parts
1 16.0 X8 + parts
2 12.0 nan
3 10.0 nan
4 5.0 nan