<p>您需要使用merge并用<code>fillna()</code>替换nan。你知道吗</p>
<pre><code>df1 = pd.DataFrame({'Column1': range(1,26)})
df2 = pd.DataFrame({'Column1': range(1,11),
'Column2': ['A','B','C','D','E','F','G','H','I','J']})
df1 = df1.merge(df2, on=['Column1'], how='left')
fill_dict = {11: 'C', 12: 'C', 13: 'C',
14: 'D', 15: 'D', 16: 'D', 17: 'D', 18: 'D',
19: 'E', 20: 'E', 21: 'E', 22: 'E', 23: 'E', 24: 'E', 25: 'E'}
df1['Column2'] = df1.replace({'Column1':fill_dict})
print(df1)
</code></pre>
<p>输出:</p>
<pre><code> Column1 Column2
0 1 1
1 2 2
2 3 3
3 4 4
4 5 5
5 6 6
6 7 7
7 8 8
8 9 9
9 10 10
10 11 C
11 12 C
12 13 C
13 14 D
14 15 D
15 16 D
16 17 D
17 18 D
18 19 E
19 20 E
20 21 E
21 22 E
22 23 E
23 24 E
24 25 E
</code></pre>
<p><strong>编辑1:</strong></p>
<p>如果您有一个范围来创建fill\u dict dictionary,您可以使用<code>dict.fromkeys()</code></p>
<pre><code>fill_dict = dict.fromkeys(range(11,14),'C')
fill_dict.update(dict.fromkeys(range(14,19),'D'))
fill_dict.update(dict.fromkeys(range(19,26),'E'))
</code></pre>
<p>或者您也可以使用列表理解来创建fill\ u dict dict</p>
<pre><code>fill_dict = dict([(i, 'C') for i in range(11, 14)] +
[(i, 'D') for i in range(14, 19)] +
[(i, 'E') for i in range(19, 26)])
</code></pre>
<p><strong>编辑2:</strong></p>
<p>根据我们的聊天记录,你能试试这个吗:</p>
<p>我没有用int的范围创建dict,因为您的数据有浮点值,我想到了使用<code>np.arange()</code>,但是用十进制精度识别正确的键有点问题。所以,我想写一个函数来生成密钥。我确信这在性能方面是不高效的。但它完成了任务。应该有其他有效的解决办法。你知道吗</p>
<pre><code>import pandas as pd
import decimal
def gen_float_range(start, stop, step):
while start < stop:
yield float(start)
start += decimal.Decimal(step)
base1 = pd.DataFrame({'HS CODE': [5004.0000,5005.0000,5006.0000,5007.1000,5007.2000,6115.950,6115.950,6115.960,6115.960,6115.950]})
base2 = pd.DataFrame({'HS CODE': [5004.0000,5005.0000,5006.0000,5007.1000,5007.2000],
'%age': 0.4})
base1 = base1.merge(base2, on=['HS CODE'], how='left')
fill_dict = dict.fromkeys(list(gen_float_range(6110,6121,0.0001)),'0.06')
# base1['%age'] = base1.replace({'HS CODE':fill_dict})
base1['%age'] = base1['%age'].fillna(base1['HS CODE'].map(fill_dict))
print(base1)
</code></pre>
<p>输出:</p>
<pre><code> HS CODE %age
0 5004.00 0.4
1 5005.00 0.4
2 5006.00 0.4
3 5007.10 0.4
4 5007.20 0.4
5 6115.95 0.06
6 6115.95 0.06
7 6115.96 0.06
8 6115.96 0.06
9 6115.95 0.06
</code></pre>
<p>您必须创建具有不同范围的fill dict,并使用<code>start</code>和<code>stop</code>值将其附加到fill dict中,<code>step</code>应该是递增的方式。根据您共享的数据,我假设步长为0.0001,但这对于dict来说太多了。您可以根据您的需求考虑将<code>step</code>减少到0.1或0.01的方法。你知道吗</p>