2016-08-12 1 views
2

Ich möchte meine Indizes ändern. Mein dataFrame ist wie folgt:Python DataFrame: Warum ändern sich meine Werte in NaN, wenn ich die Indizes ändere?

partA = pd.DataFrame({'u1': 2, 'u2': 3, 'u3':4, 'u4':29, 'u5':4, 'u6':1, 'u7':323, 'u8':9, 'u9':7, 'u10':5}, index = [20]) 

, die einen Datenrahmen der Größe (1,10) mit allen Zellen gefüllt gibt.

Wenn ich jedoch einen neuen Datenrahmen von diesem erstellen (notwendig in meinem ursprünglichen Code, die verschiedene Daten enthalten) und ich den Index für diesen Datenrahmen ändern, sind die Werte meiner Zellen alle gleich NaN.

Ich weiß, dass ich reset_index verwenden könnte, um den Index zu ändern, aber ich möchte in der Lage sein, alles in einer Zeile zu tun.

Was ich jetzt tat, ist die folgende (was NaNs)

partB = pd.DataFrame(partA, columns = ['A', 'B', 'C', 'D','E', 'F', 'G', 'H', 'I','J']) 
+0

Bitte fragen Sie eine neue Frage mit einem neuen Beitrag stattdessen Ihre Frage zu bearbeiten. – ayhan

Antwort

1

Sie benötigen values zum Umwandeln partA-numpy array:

partA = pd.DataFrame({'u1': 2, 'u2': 3, 'u3':4, 'u4':29, 'u5':4, 'u6':1, 
         'u7':323, 'u8':9, 'u9':7, 'u10':5}, index = [20]) 
print (partA) 
    u1 u10 u2 u3 u4 u5 u6 u7 u8 u9 
20 2 5 3 4 29 4 1 323 9 7 

partB = pd.DataFrame(partA.values,columns = ['A', 'B', 'C', 'D','E', 'F', 'G', 'H', 'I','J']) 
print (partB) 
    A B C D E F G H I J 
0 2 5 3 4 29 4 1 323 9 7 

Wenn Bedarf Index von partA:

partB = pd.DataFrame(partA.values, 
        columns = ['A', 'B', 'C', 'D','E', 'F', 'G', 'H', 'I','J'], 
        index = partA.index) 
print (partB) 
    A B C D E F G H I J 
20 2 5 3 4 29 4 1 323 9 7 

Sie erhalten NaN, da keine Spaltennamen ausrichten, so dass, wenn Nachname geändert (u7) Sie Wert erhalten:

partB = pd.DataFrame(partA, 
        columns = ['A', 'B', 'C', 'D','E', 'F', 'G', 'H', 'I','u7'], 
        index = partA.index) 
print (partB) 
    A B C D E F G H I u7 
20 NaN NaN NaN NaN NaN NaN NaN NaN NaN 323 
+0

Danke! Ich habe meinem Teil oben noch eine Frage hinzugefügt. –

+0

Erste Frage - Ich denke, das beste ist nicht, leere 'DataFrame' zu ​​erstellen, sondern sie zu erstellen, indem alle kleinen DataFrames zu einem, vielleicht Parameter' keys' in ['concat'] zusammengefasst werden (http://pandas.pydata.org/ pandas-docs/stable/generated/pandas.concat.html) ist hilfreich. – jezrael

+0

Zweite Frage - können Sie Probe hinzufügen? Aber ich denke, es ist eine neue Frage, keine Pandas, sondern Python-Problem, also denke ich, das Beste ist, Neues zu erschaffen, und ein Python-Guru kann dir besser helfen, als ich. – jezrael

Verwandte Themen