我有以下pandas 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
捕获该数据。
我可以提供更多关于数据的背景知识。这些行当前是推文,因此用户可以(并且经常)在给定的一天内发送超过一次的推文。因此,也会有重复fixed_date
,因为我忽略了推文的确切时间(HH:MM:SS)。如果用户在给定日期内多次发推文,那么将其分组到单元格值并创建元组数组会很棒。如果这已经要求太多,那么只要拥有相同值的多个列就更好了。如果这不可能,我还可以将日期保存到单独的数组中并枚举列0..n
。只是扔出想法。
有什么想法吗?
答案 0 :(得分:0)
它不优雅,但这可行:
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 ndarray / matrix。