J'ai un ensemble de dataframes contenant des tweets avec des horodatages. Afin de créer une série de temps quotidienne, j'ai essayé de fusionner les lignes de jour dans chaque Dataframe.
Ma solution était ce code dans une boucle: p> tandis que les résultats Semble bien, la boucle est terriblement lente et compliquée sans raison. De plus, si je fusionne des lignes à nouveau comme ceci, le résultat sera la liste des listes, qui n'est pas souhaitable aussi. P> Le processus est censé être comme suit: P> time text
0 [1, 2, 3, 4, 5] [foo, bar, foo, bar, foo]
3 Réponses :
Cela pourrait fonctionner:
def summarize(df,start,end,columns):
row = {}
for col in columns:
print(df[col][start:end].tolist())
row[col]=df[col][start:end].tolist()
df =df.append(row,ignore_index=True)
df=df.drop(df.index[range(start,end)])
df = df.reset_index()
return df
1ère question 2e question p>
df = pd.DataFrame({'time': [1,2,3,4,5],
'text': ['foo', 'bar', 'foo', 'bar', 'foo']})
df
text time
0 foo 1
1 bar 2
2 foo 3
3 bar 4
4 foo 5
def consolidate(df, break_index): #df = dataframe, break_index = index where you want to create the first list
text = [[x for x in df['text'][0:break_index]]]
time = [[x for x in df['time'][0:break_index]]]
if break_index == len(df):
pass
else:
time.append([x for x in df['time'][break_index:]])
text.append([x for x in df['text'][break_index:]])
df2 =pd.DataFrame({'time':time,'text':text})
return df2
consolidate(df,3)
text time
0 [foo, bar, foo] [1, 2, 3]
1 [bar, foo] [4, 5]
consolidate(df,5)
text time
0 [foo, bar, foo, bar, foo] [1, 2, 3, 4, 5]