Python 将数字中的颜色散列到数据帧中

Python 将数字中的颜色散列到数据帧中,python,pandas,Python,Pandas,我有这个数据集 我想把区域散列成颜色,这样 3: Yellow c will be yellow for 3 , i+=1 4: Green c will be green for 4, i+=1 2: Orange : 1: Maroon : 这是密码 colors={1:'Maroon',2:'Orange',3:'Yellow',4:'Green',5:'darkpurple',6:'Gray'} for i in df_statio

我有这个数据集

我想把
区域
散列成颜色,这样

3: Yellow    c will be yellow for 3 , i+=1 
4: Green     c will be green for 4, i+=1 
2: Orange         :
1: Maroon         :
这是密码

colors={1:'Maroon',2:'Orange',3:'Yellow',4:'Green',5:'darkpurple',6:'Gray'}

for i in df_station.index[:25]: 
    c=str(df_station.loc[colors,'Zone'])
但是,给了我一个错误,比如

1          4
2          2
3          3
4          3
5    3,4,5,6
6    3,4,5,6
Name: Zone, dtype: object

请帮帮我,我该怎么做?看起来很简单,但我找不到正确的语法来执行此操作。首先,让我重现您查询中提到的示例DFU站(数据帧)。然后我们可以转到
解决方案
<数据帧的代码>代码复制如下所述:-

# Import all-important Libraries
import pandas as pd 

# Reproduction of Sample 'df_station' DataFrame
df_station = pd.DataFrame({
    'Station': ['Abbey Road', 'Abbey Wood', 'Acton Central', 'Acton Main Line', 'Acton Town'],
    'OS X': [539081, 547297, 520613, 520296, 519457],
    'OS Y': [183352, 179002, 180299, 181196, 179639],
    'Latitude': [51.521952, 51.490784, 51.508758, 51.516887, 51.503071],
    'Longitude': [0.003723, 0.120271, -0.263430, -0.267690, -0.280303],
    'Zone': [3, 4, 2, 3, 3],
    'Postcode': ['E15 3NB', 'SE2 9RH', 'W3 6BH', 'W3 9EH', 'W3 8HN']
})

# Print records of 'df_station' DataFrame
df_station
# Declaration of 'hash_zone_color' Function for Conversion of 'Zone Number' into 'Zone Colors'
def hash_zone_color(zone_color):
    if zone_color == 1:
        return 'Maroon'
    elif zone_color == 2:
        return 'Orange'
    elif zone_color == 3:
        return 'Yellow'
    elif zone_color == 4:
        return 'Green'
    elif zone_color == 5:
        return 'Dark Purple'
    elif zone_color == 6:
        return 'Gray'
    else:
        pass

# Initialization of 'hash_zone_color' function for the Conversion
df_station['Zone'] = df_station['Zone'].apply(hash_zone_color)

# Print Updated Records
df_station

适当的解决办法:- 您可以创建一个具有
转换功能的
函数
<相同方法的代码>代码
如下所述:-

# Import all-important Libraries
import pandas as pd 

# Reproduction of Sample 'df_station' DataFrame
df_station = pd.DataFrame({
    'Station': ['Abbey Road', 'Abbey Wood', 'Acton Central', 'Acton Main Line', 'Acton Town'],
    'OS X': [539081, 547297, 520613, 520296, 519457],
    'OS Y': [183352, 179002, 180299, 181196, 179639],
    'Latitude': [51.521952, 51.490784, 51.508758, 51.516887, 51.503071],
    'Longitude': [0.003723, 0.120271, -0.263430, -0.267690, -0.280303],
    'Zone': [3, 4, 2, 3, 3],
    'Postcode': ['E15 3NB', 'SE2 9RH', 'W3 6BH', 'W3 9EH', 'W3 8HN']
})

# Print records of 'df_station' DataFrame
df_station
# Declaration of 'hash_zone_color' Function for Conversion of 'Zone Number' into 'Zone Colors'
def hash_zone_color(zone_color):
    if zone_color == 1:
        return 'Maroon'
    elif zone_color == 2:
        return 'Orange'
    elif zone_color == 3:
        return 'Yellow'
    elif zone_color == 4:
        return 'Green'
    elif zone_color == 5:
        return 'Dark Purple'
    elif zone_color == 6:
        return 'Gray'
    else:
        pass

# Initialization of 'hash_zone_color' function for the Conversion
df_station['Zone'] = df_station['Zone'].apply(hash_zone_color)

# Print Updated Records
df_station
正如您所看到的,我们使用了
pandas.DataFrame.apply()
来解析
区域的散列数的
参数。因此,我们可以
映射
区域颜色
<下面给出了上述代码的代码>输出
:-

# Output of above cell:-
    Station         OS X    OS Y    Latitude    Longitude   Zone    Postcode
0   Abbey Road      539081  183352  51.521952   0.003723    Yellow  E15 3NB
1   Abbey Wood      547297  179002  51.490784   0.120271    Green   SE2 9RH
2   Acton Central   520613  180299  51.508758   -0.263430   Orange  W3 6BH
3   Acton Main Line 520296  181196  51.516887   -0.267690   Yellow  W3 9EH
4   Acton Town      519457  179639  51.503071   -0.280303   Yellow  W3 8HN
要了解有关熊猫.DataFrame.apply()的详细信息,请执行以下操作:


希望此解决方案对您有所帮助。

首先,让我重现您查询中提到的示例DFU站(数据帧)
。然后我们可以转到
解决方案
<数据帧的代码>代码复制如下所述:-

# Import all-important Libraries
import pandas as pd 

# Reproduction of Sample 'df_station' DataFrame
df_station = pd.DataFrame({
    'Station': ['Abbey Road', 'Abbey Wood', 'Acton Central', 'Acton Main Line', 'Acton Town'],
    'OS X': [539081, 547297, 520613, 520296, 519457],
    'OS Y': [183352, 179002, 180299, 181196, 179639],
    'Latitude': [51.521952, 51.490784, 51.508758, 51.516887, 51.503071],
    'Longitude': [0.003723, 0.120271, -0.263430, -0.267690, -0.280303],
    'Zone': [3, 4, 2, 3, 3],
    'Postcode': ['E15 3NB', 'SE2 9RH', 'W3 6BH', 'W3 9EH', 'W3 8HN']
})

# Print records of 'df_station' DataFrame
df_station
# Declaration of 'hash_zone_color' Function for Conversion of 'Zone Number' into 'Zone Colors'
def hash_zone_color(zone_color):
    if zone_color == 1:
        return 'Maroon'
    elif zone_color == 2:
        return 'Orange'
    elif zone_color == 3:
        return 'Yellow'
    elif zone_color == 4:
        return 'Green'
    elif zone_color == 5:
        return 'Dark Purple'
    elif zone_color == 6:
        return 'Gray'
    else:
        pass

# Initialization of 'hash_zone_color' function for the Conversion
df_station['Zone'] = df_station['Zone'].apply(hash_zone_color)

# Print Updated Records
df_station

适当的解决办法:- 您可以创建一个具有
转换功能的
函数
<相同方法的代码>代码
如下所述:-

# Import all-important Libraries
import pandas as pd 

# Reproduction of Sample 'df_station' DataFrame
df_station = pd.DataFrame({
    'Station': ['Abbey Road', 'Abbey Wood', 'Acton Central', 'Acton Main Line', 'Acton Town'],
    'OS X': [539081, 547297, 520613, 520296, 519457],
    'OS Y': [183352, 179002, 180299, 181196, 179639],
    'Latitude': [51.521952, 51.490784, 51.508758, 51.516887, 51.503071],
    'Longitude': [0.003723, 0.120271, -0.263430, -0.267690, -0.280303],
    'Zone': [3, 4, 2, 3, 3],
    'Postcode': ['E15 3NB', 'SE2 9RH', 'W3 6BH', 'W3 9EH', 'W3 8HN']
})

# Print records of 'df_station' DataFrame
df_station
# Declaration of 'hash_zone_color' Function for Conversion of 'Zone Number' into 'Zone Colors'
def hash_zone_color(zone_color):
    if zone_color == 1:
        return 'Maroon'
    elif zone_color == 2:
        return 'Orange'
    elif zone_color == 3:
        return 'Yellow'
    elif zone_color == 4:
        return 'Green'
    elif zone_color == 5:
        return 'Dark Purple'
    elif zone_color == 6:
        return 'Gray'
    else:
        pass

# Initialization of 'hash_zone_color' function for the Conversion
df_station['Zone'] = df_station['Zone'].apply(hash_zone_color)

# Print Updated Records
df_station
正如您所看到的,我们使用了
pandas.DataFrame.apply()
来解析
区域的散列数的
参数。因此,我们可以
映射
区域颜色
<下面给出了上述代码的代码>输出
:-

# Output of above cell:-
    Station         OS X    OS Y    Latitude    Longitude   Zone    Postcode
0   Abbey Road      539081  183352  51.521952   0.003723    Yellow  E15 3NB
1   Abbey Wood      547297  179002  51.490784   0.120271    Green   SE2 9RH
2   Acton Central   520613  180299  51.508758   -0.263430   Orange  W3 6BH
3   Acton Main Line 520296  181196  51.516887   -0.267690   Yellow  W3 9EH
4   Acton Town      519457  179639  51.503071   -0.280303   Yellow  W3 8HN
要了解有关熊猫.DataFrame.apply()的详细信息,请执行以下操作:


希望此解决方案对您有所帮助。

只需将
颜色映射到词典即可

df['Zone']=df['Zone'].地图(颜色)
如果
区域中的值
包含的值不在
颜色的键中
。如果找不到键,可以使用
dict.get(键,默认值)
指定默认值

df['Zone'] = df['Zone'].map(lambda x: colors.get(x, 'Unknown Color'))

只需将
colors
dictionary映射到系列

df['Zone']=df['Zone'].地图(颜色)
如果
区域中的值
包含的值不在
颜色的键中
。如果找不到键,可以使用
dict.get(键,默认值)
指定默认值

df['Zone'] = df['Zone'].map(lambda x: colors.get(x, 'Unknown Color'))

这不是一个错误。您没有将结果颜色存储在任何位置,也没有在循环中使用循环变量
i
。是否尝试添加颜色与区域匹配的新列?你想要这个结果是什么?我想要这样的结果,如果df_站['Zone']是1,那么c是栗色的,所以我用
I
作为
loc
的第一个参数,但是弄不清楚如何用颜色来散列它。请帮我@timroberts你想要
df['Zone']=df['Zone'])。地图(颜色)
?这不是一个错误。您没有将结果颜色存储在任何位置,也没有在循环中使用循环变量
i
。是否尝试添加颜色与区域匹配的新列?你想要这个结果是什么?我想要这样的结果,如果df_station['Zone']是1,那么c是栗色的,所以我用
I
作为
loc
的第一个参数,但是我搞不清楚如何用颜色来散列它。请帮我@timroberts你想要
df['Zone']=df['Zone']好的。我想使用这种语法,我知道我可以使用
get
,但是因为错误说它不能被散列,所以我感到困惑。非常感谢你。我想使用这种语法,我知道我可以使用
get
,但是因为错误说它不能被散列,所以我感到困惑。多谢各位