小编S.z*_*hen的帖子

df.head()有时在Pandas,Python中不起作用

我是Python和Pandas库的初学者,我对DataFrame的一些基本功能感到困惑.我有一个pandas DataFrame如下:

>>>df.head()  
              X  Y       unixtime
0  652f5e69fcb3  1  1346689910622
1        400292  1  1346614723542
2  1c9d02e4f14e  1  1346862070161
3        610449  1  1346806384518
4        207664  1  1346723370096
Run Code Online (Sandbox Code Playgroud)

但是,在我执行了一些功能之后:

def unixTodate(unix):
  day = dt.datetime.utcfromtimestamp(unix/1000).strftime('%Y-%m-%d')
  return day

df['day'] = df['unixtime'].apply(unixTodate)
Run Code Online (Sandbox Code Playgroud)

我再也无法使用df.head()函数了:

>>>df.head()  

<class 'pandas.core.frame.DataFrame'>
Int64Index: 5 entries, 190648 to 626582
Data columns:
X              5  non-null values
Y              5  non-null values
unixtime       5  non-null values
day            5  non-null values
dtypes: int64(3), object(5)
Run Code Online (Sandbox Code Playgroud)

我不明白为什么会这样.我在这里做错了吗?欢迎任何指针!谢谢.

python pandas

20
推荐指数
1
解决办法
3万
查看次数

创建一个基于Python中另一列递增的列

我目前已将注意力从R转移到Python.我在R中使用data.table,我发现有时很难找到Python中某些函数的等价物.

我有一个像这样的pandas数据框:

df = pd.DataFrame({'A':['abc','def','def','abc','def','def','abc'],'B':[13123,45, 1231,463,142131,4839,4341]})

     A       B  
0  abc   13123    
1  def      45  
2  def    1231  
3  abc     463  
4  def  142131  
5  def    4839
6  abc    4341
Run Code Online (Sandbox Code Playgroud)

我需要创建一个基于A和B递增1的列,以便它表示B的递增顺序.所以我首先创建排序数据框,我有兴趣创建的列是C,如下所示:

    A       B   C
1  abc     463  1
6  abc    4341  2
0  abc   13123  3
3  def      45  1
2  def    1231  2
5  def    4839  3
4  def  142131  4
Run Code Online (Sandbox Code Playgroud)

在R中,使用库(data.table),可以在一行中轻松完成,并在原始数据表中创建一个列:

df [,C:= 1:.N,by = A]

我环顾四周,我想我可以使用这样的东西:

df.groupby('A').size()

df ['B'].argsort()

但不知道如何从这里开始,以及如何将新列连接回原始数据框.如果有人能给我任何指针,那将是非常有帮助的.

非常感谢!

python r pandas data.table

5
推荐指数
1
解决办法
2310
查看次数

标签 统计

pandas ×2

python ×2

data.table ×1

r ×1