TLDR;如何改进代码并使其更具pythonic?
你好
我们在教程中遇到的一个有趣的挑战是: “数据框中缺少X个条目,其中包含相关代码,但代码旁边有一个‘空白’条目。这是数据帧中的随机现象。利用您对熊猫的了解,将每个缺失的‘空白’条目映射到相关代码。”
这看起来像是:
|code| |name|
001 Australia
002 London
...
001 <blank>
我采用的方法如下:
循环遍历整个数据帧并用空格“”标识区域。通过将相关的正确代码(顺序)复制到数据帧来替换所有空格。你知道吗
code_names = [ "",
'Economic management',
'Public sector governance',
'Rule of law',
'Financial and private sector development',
'Trade and integration',
'Social protection and risk management',
'Social dev/gender/inclusion',
'Human development',
'Urban development',
'Rural development',
'Environment and natural resources management'
]
df_copy = df_.copy()
# Looks through each code name, and if it is empty, stores the proper name in its place
for x in range(len(df_copy.mjtheme_namecode)):
for y in range(len(df_copy.mjtheme_namecode[x])):
if(df_copy.mjtheme_namecode[x][y]['name'] == ""):
df_copy.mjtheme_namecode[x][y]['name'] = code_names[int(df_copy.mjtheme_namecode[x][y]['code'])]
limit = 25
counter = 0
for x in range(len(df_copy.mjtheme_namecode)):
for y in range(len(df_copy.mjtheme_namecode[x])):
print(df_copy.mjtheme_namecode[x][y])
counter += 1
if(counter >= limit):
break
虽然上述方法是有效的-有没有更好的,更python的方式来实现我的追求?我觉得我使用的方法非常笨拙,因为我的技能没有得到很好的发展。你知道吗
谢谢你!你知道吗
方法1:
一种方法是用} :
NaN
替换所有""
空格,按code
和name
对数据帧排序,然后使用^{从这个开始:
您可以应用以下内容:
方法2:
这更复杂,但也会起作用: 使用
groupby
、first
和sqeeze
,可以创建pd.Series
将代码映射到非空名称,并使用.map
将序列映射到code
列:解释:这样创建的
pd.Series
映射如下所示:它之所以有效是因为它获得了每个代码的第一个实例(通过
groupby
),排序方式使得NaN
是最后一个。因此,只要每个代码都与一个名称相关联,这个方法就可以工作。你知道吗相关问题 更多 >
编程相关推荐