重塑熊猫DataFrame和保存元组



我有以下熊猫DataFrame, df.head():

   userid  followers    experience fixed_date
0   12134      28266  Intermediate 2012-10-15
1   12134      28266  Intermediate 2012-10-15
2   91638        665       Missing 2012-10-15
3  148401        123  Professional 2012-10-15
4    5890       2436  Professional 2012-10-15

我想创建一个新的DataFrame,其中行是userid,列是fixed_date,值是(followers,experience)的元组。正如您所看到的,我有重复的userid行,这是我在尝试df.pivot()时得到的错误。但是followers的数量可以在以后的日期更改,所以我想捕获每个userid的数量。

我可以提供更多关于数据的背景信息。这些行是当前的tweet,因此用户可以(而且经常)在给定的一天内发布多个tweet。因此,也会有重复的fixed_date,因为我忽略了tweet的确切时间(HH:MM:SS)。对于用户在给定日期内多次发布tweet的情况,最好将其分组到单元格值中,并创建一个元组数组。如果这已经要求太多了,那么仅仅拥有相同值的多个列就绰绰有余了。如果不可能,我还可以将日期保存到一个单独的数组中,并枚举列0..n。只是随便说说而已。

任何想法?

这不是很优雅,但可以工作:

df2 = pd.DataFrame(df.loc[:, ['followers', 'fixed_date']])  # New frame with just two cols
df2.index = df.userid  # Set the index to user id
df2 = df2.drop_duplicates()  # remove duplicate records

或者如果你只想把元组传递给一个数组,你可以这样做:

df.loc[:, ['userid', 'fixed_date', 'followers']].values
# array([[12134, '2012-10-15', 28266],
   [12134, '2012-10-15', 28266],
   [91638, '2012-10-15', 665],
   [148401, '2012-10-15', 123],
   [5890, '2012-10-15', 2436]], dtype=object)

您可以使用它作为稀疏矩阵传递或转换为numpy narray/矩阵。

最新更新