2017-01-06 2 views
0

Ich versuche, die gleichen Elemente der Datentabelle mit zwei Pandas zu erhalten, indem man die Daten indexiert und sie zusammenführt. Ich benutze es für eine sehr große Menge von Daten (Millionen). Die erste Tabelle (df) ist constatn und die zweite (d2) ändert sich in jeder Schleife, wobei die neuen Elemente mit der ersten Tabelle zusammengeführt werden.Pandas hashtable mit gibt Schlüsselfehler: 0

hier ist mein Code für diesen Prozess:

df = pd.read_csv("inputfile.csv",header=None) 
d1 = pd.DataFrame(df).set_index(0) 

for i in range(0, len(df)): 
    try: 
      follower_id=twitter.get_followers_ids(user_id=df.iloc[i][0],cursor=next_cursor) 


      f=follower_id['ids'] 
      json.dumps(f) 
      d2 = pd.DataFrame(f).set_index(0) 
      match_result = pd.merge(d1,d2,left_index=True,right_index=True) 
      fk=[df.iloc[i][0] for number in range(len(match_result))] 
      DF = pd.DataFrame(fk) 

      DF.to_csv(r'output1.csv',header=None,sep=' ',index=None) 
      match_result.to_csv(r'output2.csv', header=None, sep=' ') 

ich erfahren habe, dass dieser Code, für eine Weile läuft gut, aber nach dass- es wahrscheinlich auf die zweite databasses Größe wich relatad ist jede Änderung, Schleife - das Programm gibt mir die folgende Fehlermeldung und stoppe zu laufen:

Traceback (most recent call last): 
File "halozat3.py", line 39, in <module> 
d2 = pd.DataFrame(f).set_index(0) #1Trump koveto kovetolistaja 
File "/usr/lib/python2.7/dist-packages/pandas/core/frame.py", line 2372, in set_index 
level = frame[col].values 
File "/usr/lib/python2.7/dist-packages/pandas/core/frame.py", line 1678, in __getitem__ 
return self._getitem_column(key) 
File "/usr/lib/python2.7/dist-packages/pandas/core/frame.py", line 1685, in _getitem_column 
return self._get_item_cache(key) 
File "/usr/lib/python2.7/dist-packages/pandas/core/generic.py", line 1052, in _get_item_cache 
values = self._data.get(item) 
File "/usr/lib/python2.7/dist-packages/pandas/core/internals.py", line 2565, in get 
loc = self.items.get_loc(item) 
File "/usr/lib/python2.7/dist-packages/pandas/core/index.py", line 1181, in get_loc 
return self._engine.get_loc(_values_from_object(key)) 
File "index.pyx", line 129, in pandas.index.IndexEngine.get_loc (pandas/index.c:3656) 
File "index.pyx", line 149, in pandas.index.IndexEngine.get_loc (pandas/index.c:3534) 
File "hashtable.pyx", line 381, in pandas.hashtable.Int64HashTable.get_item (pandas/hashtable.c:7035) 
File "hashtable.pyx", line 387, in   pandas.hashtable.Int64HashTable.get_item (pandas/hashtable.c:6976) 
KeyError: 0 

Was könnte das Problem sein?

+1

Ganz einfach, '0' keine Spaltenbeschriftung ist. Haben Sie versucht 'd2 = pd.DataFrame (f) .set_index ('ids')'? – IanS

+0

Ich würde empfehlen, die Ausnahme abzufangen und f zu drucken, wenn KeyError auftritt. Auf diese Weise können Sie sehen, wie sich dieses f von dem unterscheidet, was Sie erwarten, da es aus irgendeinem Grund nicht die Spalte 0 hat, während die anderen es tun. – Skirrebattie

+0

Ich habe es versucht, aber gibt mir: 'KeyError: 'ids'' – John

Antwort

0

Haben Sie nur eine Zeile in Ihrem Datenrahmen?

Sie müssen so viele Zeilen schreiben, wie Sie wie Look