使用glob.glob从重复的轴错误重新索引

时间:2019-03-14 11:28:36

标签: python pandas glob

当我尝试运行此代码时:

import pandas as pd
import glob
files = [pd.read_excel(p, skipfooter=1) for p in glob.glob("path/*.xlsx")]
df = files[0].append([files[i] for i in range(1,len(files))])       
df.loc[(df[df.columns[6]] == 2002040041),'New Column'] = df[df.columns[2]]

我收到以下错误:

  

ValueError跟踪(最近一次通话最近)    在

     

---> 5 df.loc [(df [df.columns [6]] == 2002040041),“新列”] = df [df.columns [2]]

     

ValueError:无法从重复的轴重新索引

但是,当我编写一个.csv然后阅读它时,问题就解决了。

import pandas as pd
import glob
files = [pd.read_excel(p, skipfooter=1) for p in glob.glob("path/*.xlsx")]
df = files[0].append([files[i] for i in range(1,len(files))])
df.to_csv("file.csv", encoding='utf-8-sig')
df = pd.read_csv("file.csv") 
df.loc[(df[df.columns[6]] == 2002040041),'New Column'] = df[df.columns[2]]

如果我改用df.to_excel,则错误仍然存​​在。

为什么会发生此错误?如何在不编写.csv文件的情况下解决该问题?每个文件中的所有列名称都相同,并且彼此不同。

1 个答案:

答案 0 :(得分:1)

您需要$RE_saddr = qr/^(.+):(\d+)$/; sub send_packet($$;$) { my ($sock, $packet, $dest) = @_; my @params = ($packet, 0); if (defined($dest)) { if (my ($addr, $port) = $dest =~ $RE_saddr) { if (my $addr_bin = inet_aton($addr)) { if (defined($dest = sockaddr_in($port, $addr_bin))) { push(@params, $dest); } else { warn "bad address or socket for $addr:$port"; } } else { warn "bad address $addr"; } } else { warn "bad destination address $dest"; } } return 1 if ($sock->send(@params)); return undef; } 的默认索引:

<form>
  <table width="100%">
    <tr>
      <td>Je naam:</td>
      <td align="right">
        <input type="text" id="naam" name="naam" size="25" maxlength="35" placeholder="Elon Musk">
      </td>
    </tr>
    <tr>
      <td>Je e-mailadress:</td>
      <td align="right">
        <input type="text" id="email" name="email" size="25" maxlength="25" placeholder="JosDePutte@gmail.com">
      </td>
    </tr>
    <tr>
      <td>Type vraag:</td>
      <td align="right">
        <select name="Type Vraag">
          <option value="Business">Business</option>
          <option value="ProductVraag">Vraag over een product</option>
          <option value="Andere">Andere</option>
        </select>
      </td>
    </tr>
    <tr>
      <td>Je vraag:</td>
      <td align="right">
        <textarea id="Vraag" name="Vraag" maxlength="250"></textarea>
      </td>
    </tr>
  </table>
</form>

或通过DataFrame.append中的参数reset_index(drop=True)

df = df.reset_index(drop=True)

然后将代码简化:

ignore_index=True