擅长:python、mysql、java
<p>问题是索引值重复。当您使用<code>df1.fillna(df2)</code>时,如果df1中有多个<code>NaN</code>条目的索引和列标签都是相同的,pandas在尝试分割df1时会感到困惑,并抛出<code>InvalidIndexError</code>。在</p>
<p>您的示例数据帧工作正常,因为即使有重复的索引值,每个索引值中只有一个是空的。在某些情况下,较大的数据帧包含共享索引值和列标签的空项。在</p>
<p>要使其工作,您可以一次只做一列。由于某些原因,当操作一个序列时,pandas不会被同一索引的多个条目混淆,而只会在每个条目中填充相同的值。因此,这应该是有效的:</p>
<pre><code>import pandas as pd
df = pd.read_csv('www004.csv')
# CSV file is here: https://www.dropbox.com/s/w3m0jppnq74op4c/www004.csv?dl=0
df1 = df.set_index('mukey')
grouped = df.groupby('mukey').mean()
for col in ['sandtotal_r', 'silttotal_r']:
df1[col] = df1[col].fillna(grouped[col])
df1.reset_index()
</code></pre>
<p>注意:如果您在填充的数据帧中有“额外”数据,请小心使用<code>combine_first</code>方法。<code>combine_first</code>函数将包含从中填充的数据帧中的所有索引,即使它们不在原始数据帧中。在</p>