Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 重塑数据帧并保存元组_Python_Pandas - Fatal编程技术网

Python 重塑数据帧并保存元组

Python 重塑数据帧并保存元组,python,pandas,Python,Pandas,我有以下熊猫DataFrame,df.head(): 我想创建一个新的DataFrame,其中行是userid,列是fixed\u date,值是(追随者,体验)的元组。如您所见,我有重复的userid行,这是我在尝试df.pivot()时遇到的错误。但是关注者的数量在以后可能会发生变化,因此我想为每个用户id捕获这一点 我可以提供更多关于数据的背景资料。这些行当前是tweet,因此用户可以(并且经常)在给定的一天中发出多次tweet。因此,也会有重复的fixed_date,因为我忽略了twee

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

我想创建一个新的
DataFrame
,其中行是
userid
,列是
fixed\u date
,值是
(追随者,体验)
的元组。如您所见,我有重复的
userid
行,这是我在尝试
df.pivot()
时遇到的错误。但是
关注者的数量在以后可能会发生变化,因此我想为每个
用户id
捕获这一点

我可以提供更多关于数据的背景资料。这些行当前是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 ndarray/矩阵。

不幸的是,这并不能实现我上面描述的功能。我基本上想把一个数据帧转换成一个marix,其中行是
userid
s,列是
fixed\u date
@David中的许多日期,你能更具体地描述一下实际输出的样子吗?我编辑了我的答案,为您提供了一个3元组数组,可以在稀疏矩阵中使用,也可以转换为您想要的任何numpy数据类型。
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)