我有一个示例数据如下:
datetime x y
2021-05-01. 25. val1
2021-05-02. 50. val2
2021-05-03. 100 val3
2021-05-04. 25. val4
2021-05-05. 100. val5
2021-05-06. 50. val6
我想创建一个名为 z 的新列,它将 25 映射到低,50 映射到中,100 映射到高,预期输出如下所示:
datetime x y. z
2021-05-01. 25. val1. Low
2021-05-02. 50. val2. Medium
2021-05-03. 100 val3. High
2021-05-04. 25. val4. Low
2021-05-05. 100. val5. High
2021-05-06. 50. val6. Medium
答案 0 :(得分:3)
您可以使用 numpy 选择:
conditions = [df['x'] == 25, df['x'] == 50, df['x'] == 100]
choices = ['Low', 'Medium', 'High']
df['z'] = np.select(conditions, choices)
输出:
datetime x y z
0 2021-05-01. 25. val1. Low
1 2021-05-02. 50. val2. Medium
2 2021-05-03. 100. val3. High
3 2021-05-04. 25. val4. Low
4 2021-05-05. 100. val5. High
5 2021-05-06. 50. val6. Medium
如果格式是字符串使用:
conditions = [df['x'] == '25.', df['x'] == '50.', df['x'] == '100.']
答案 1 :(得分:2)
您可以使用地图:
d = {25:'Low',50:'Medium',100:'high'}
df['z'] = df['x'].map(d)
# datetime x y z
# 0 2021-05-01. 25.0 val1 Low
# 1 2021-05-02. 50.0 val2 Medium
# 2 2021-05-03. 100.0 val3 high
# 3 2021-05-04. 25.0 val4 Low
# 4 2021-05-05. 100.0 val5 high
# 5 2021-05-06. 50.0 val6 Medium
答案 2 :(得分:1)
pandas中整数转字符串的四种方式
1: frame[‘DataFrame Column’]= frame[‘DataFrame Column’].map(str)
2: frame[‘DataFrame Column’]= frame[‘DataFrame Column’].apply(str)
3: frame[‘DataFrame Column’]= frame[‘DataFrame Column’].astype(str)
4: frame[‘DataFrame Column’]= frame[‘DataFrame Column’].values.astype(str)