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
,但是因为错误说它不能被散列,所以我感到困惑。多谢各位