回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我已经用列表理解更新dataframe列一段时间了,没有问题。
如果我在dataframe上有一个过滤器,这会产生问题,列不会更新,即使理解返回正确的值。
下面是一个人为的例子,纯粹是为了说明这个问题。在</p>
<p>如果填充了Region,我首先将Town列更新为与Region相同。
然后我尝试在地址中找到Town的值,如果它还没有被填充。问题是第二个update语句不起作用。在</p>
<p>很明显,我对理解力的理解是不够的,所以请给我指点我做错了什么。
谢谢!在</p>
<pre><code>import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import math
import pyodbc
#create dataframe
data = [{'Address': '123 Fake st, someTown, Nebraska', 'Region':'nebraska', 'metric1':50,'Town':''},
{'Address': '2345 Fake st, someTown, Nebraska', 'Region':'nebraska', 'metric1':50,'Town':''},
{'Address': '43 Fake st, someTown, Nebraska', 'Region':'nebraska', 'metric1':50,'Town':''},
{'Address': '1 Fake st, someTown, Nebraska', 'Region':'nebraska', 'metric1':50,'Town':''},
{'Address': '43 Fake st, someTown, NOBraska', 'Region':'', 'metric1':50,'Town':''},
{'Address': '6 Fake st, someTown, NOBraska', 'Region':'', 'metric1':50,'Town':''},
{'Address': '45 Fake st, someTown, NOBraska', 'Region':'', 'metric1':50,'Town':''},]
<a href="https://www.cnpython.com/pypi/dataset" class="inner-link">dataset</a> = pd.DataFrame(data)
#set Town column to the region.
dataset['Town'] = [r for r in dataset['Region']]
#if Town column is still blank, find the region in the Address, correcting for a known bad spelling
dataset[dataset['Town'] =='']['Town'] = ['Nebraska' if sub.split(",")[2].strip() =='NOBraska' else sub.split(",")[2].strip() for sub in dataset[dataset['Town'] =='']['Address'].astype(str)]
#RESULT: dataset['Town'] is not updated for the case when it is empty are not updated
</code></pre>