2017-08-29 4 views
1

J'ai une base de données pandas constituée de chaînes, c'est-à-dire 'P1', 'P2', 'P3', ..., null.Les données Pandas remplacent les chaînes avec NaN en utilisant pd.concat

Lorsque j'essaie de concaténer cette trame de données avec une autre, toutes les chaînes sont remplacées par 'NaN'.

Voir mon code ci-dessous:

descriptions = pd.read_json('https://raw.githubusercontent.com/ansymo/msr2013-bug_dataset/master/data/v02/eclipse/short_desc.json') 
descriptions = descriptions.reset_index(drop=1) 
descriptions['desc'] = descriptions.short_desc.apply(operator.itemgetter(0)).apply(operator.itemgetter('what')) 
f1=pd.DataFrame(descriptions['desc']) 

bugPrior = pd.read_json('https://raw.githubusercontent.com/ansymo/msr2013-bug_dataset/master/data/v02/eclipse/priority.json') 
bugPrior = bugPrior.reset_index(drop=1) 
bugPrior['priority'] = bugPrior.priority.apply(operator.itemgetter(0)).apply(operator.itemgetter('what')) 
f2=pd.DataFrame(bugPrior['priority']) 

df = pd.concat([f1,f2]) 
print(df.head()) 

La sortie est la suivante:

   desc          priority 
0 Usability issue with external editors (1GE6IRL)  NaN 
1    API - VCM event notification (1G8G6RR)  NaN 
2 Would like a way to take a write lock on a tea...  NaN 
3 getter/setter code generation drops "F" in ".....  NaN 
4 Create Help Index Fails with seemingly incorre...  NaN 

Des idées quant à la façon dont je pourrais arrêter cela se produise? En fin de compte, mon but est d'avoir tout dans une seule trame de données afin que je puisse supprimer toutes les lignes avec des valeurs "nulles". Cela aiderait aussi plus tard dans le code.

Merci.

Répondre

2

En supposant que vous souhaitiez concaténer horizontalement ces colonnes, vous devez passer axis=1 à pd.concat, car la concaténation est par défaut verticale.

df = pd.concat([f1,f2], axis=1) 

laisser tomber ces lignes NaN, vous devriez être en mesure d'utiliser df.dropna. Appelez df.reset_index après.

df = pd.concat([f1, f2], 1) 
df = df.dropna().reset_index(drop=True) 
print(df.head(10)) 
               desc priority 
0 Create Help Index Fails with seemingly incorre...  P3 
1 Internal compiler error when compiling switch ...  P3 
2 Default text sizes in org.eclipse.jface.resour...  P3 
3 [Presentations] [ViewMgmt] Holding mouse down ...  P3 
4 Parsing of function declarations in stdio.h is...  P2 
5 CCE in RenameResourceAction while renaming ele...  P3 
6 Option to prevent cursor from moving off end o...  P3 
7  Tasks section in the user doc is very stale  P3 
8 Importing existing project with different case...  P3 
9 Workspace in use --> choose new workspace but ...  P3 

Impression sur df.priority.unique(), nous voyons qu'il ya 5 priorités uniques:

print(df.priority.unique()) 
array(['P3', 'P2', 'P4', 'P1', 'P5'], dtype=object) 
+0

Nous vous remercions de votre aide, cet ensemble de données est déjà en train de conduire m noix, et ce n'est que l'importation de données! – JohnWayne360

2

Je pense que le meilleur il est crée pas DataFrames de colonnes:

descriptions = pd.read_json('https://raw.githubusercontent.com/ansymo/msr2013-bug_dataset/master/data/v02/eclipse/short_desc.json') 
descriptions = descriptions.reset_index(drop=1) 

#get Series to f1 
f1 = descriptions.short_desc.apply(operator.itemgetter(0)).apply(operator.itemgetter('what')) 
print (f1.head()) 

bugPrior = pd.read_json('https://raw.githubusercontent.com/ansymo/msr2013-bug_dataset/master/data/v02/eclipse/priority.json') 
bugPrior = bugPrior.reset_index(drop=1) 

#get Series to f2 
f2 = bugPrior.priority.apply(operator.itemgetter(0)).apply(operator.itemgetter('what')) 
print (f2.head()) 

Ensuite, utilisez même solution que cᴏʟᴅsᴘᴇᴇᴅ répondre:

df = pd.concat([f1,f2], axis=1).dropna().reset_index(drop=True) 
print (df.head()) 
              short_desc priority 
0 Create Help Index Fails with seemingly incorre...  P3 
1 Internal compiler error when compiling switch ...  P3 
2 Default text sizes in org.eclipse.jface.resour...  P3 
3 [Presentations] [ViewMgmt] Holding mouse down ...  P3 
4 Parsing of function declarations in stdio.h is...  P2 
+0

C'est exactement ma réponse. :) –

+0

C'est bon. Vous n'avez pas eu à faire ce montage, mais merci, je l'apprécie. –

+1

@jezrael Merci pour votre réponse. Je pense que je pourrais appliquer votre recommandation et juste créer des colonnes. – JohnWayne360