【发布时间】:2018-12-17 06:32:31
【问题描述】:
我目前正在研究从 pdf 导入的 pandas df。该数据框仅包含 2 列和大约 15000 行。我需要对第一行的这个df升序进行排序,然后将该行的较低值减去同一行的所有其他值。第一个问题是我无法正确排序我的数据框...... 当然,我在网络和 stackoverflow 上搜索了答案,当然我也阅读了有关我正在使用的功能的 pandas 信息。这是我的代码:
import pandas as pd
import numpy as np
#import data
dataframe=pd.read_csv('time_and_followers_2.csv', index_col=None)
dataframe.timestamps = dataframe.timestamps.astype(int)
#sort data by first column and get informations needed
sorted_df=dataframe.sort_values(by=['timestamps'])
init_time=sorted_df.at[0,'timestamps']
total_rows = sorted_df.shape[0]
#retrieve initial time to all first column data
sorted_df['timestamps']= sorted_df['timestamps']-init_time
sorted_df.loc[-1] = [init_time,total_rows] # adding a row
sorted_df.to_csv('time_and_followers_2_sorted.csv', header=False, index=False)
这是 csv 文件的第一行:
timestamps,followers
1531137667.0,336
1531137650.0,189
1531137638.0,227
1531137617.0,58
1531137616.0,3314
任何帮助将不胜感激......
【问题讨论】:
-
您是如何得出排序不正确的结论的?您打印的是
df还是dataframe? -
你能提供一个最低限度的例子吗?
-
你说你想按行降序排序,这正是你的代码所做的。您还想按列排序吗?如果要按列排序,则必须在
sort_values方法中指定axis=1,根据文档:pandas.pydata.org/pandas-docs/stable/generated/… -
已排序,我不知道你为什么要在
sorted_df=dataframe.sort_values('timestamps', ascending=False)中明确设置ascending=False作为标志,如果你想让它升序? -
你有多个排序操作,你觉得哪一个不行?