我在索引中有一个重复值的DataFrame.我想过滤这个数据集只显示每个索引的一个实例,方法是选择索引中具有不同列中最大值的行.例如,我的DataFrame看起来像这样:
DF:
Product ID Store Sales
1 A 50
1 B 200
1 C 20
2 A 400
2 B 10
3 A 200
4 A 50
4 B 100
4 C 500
Run Code Online (Sandbox Code Playgroud)
我想将此数据过滤到此:
DF2:
Product ID Store Sales
1 B 200
2 A 400
3 A 200
4 C 500
Run Code Online (Sandbox Code Playgroud)
关于如何在熊猫中最好地解决这个问题的任何想法?
非常感谢你花时间陪伴 -
我有一个pandas DataFrame,timedeltas作为单独列中这些增量的累积和,用毫秒表示.下面提供了一个示例:
Transaction_ID Time TimeDelta CumSum[ms]
1 00:00:04.500 00:00:00.000 000
2 00:00:04.600 00:00:00.100 100
3 00:00:04.762 00:00:00.162 262
4 00:00:05.543 00:00:00.781 1043
5 00:00:09.567 00:00:04.024 5067
6 00:00:10.654 00:00:01.087 6154
7 00:00:14.300 00:00:03.646 9800
8 00:00:14.532 00:00:00.232 10032
9 00:00:16.500 00:00:01.968 12000
10 00:00:17.543 00:00:01.043 13043
Run Code Online (Sandbox Code Playgroud)
我希望能够为CumSum [ms]提供最大值,之后累积和将从0重新开始.例如,如果在上面的示例中最大值为3000,则结果将如下所示:
Transaction_ID Time TimeDelta CumSum[ms]
1 00:00:04.500 00:00:00.000 000
2 00:00:04.600 00:00:00.100 100
3 00:00:04.762 00:00:00.162 262
4 00:00:05.543 00:00:00.781 1043
5 00:00:09.567 00:00:04.024 0
6 00:00:10.654 00:00:01.087 1087
7 00:00:14.300 00:00:03.646 0 …Run Code Online (Sandbox Code Playgroud) 我曾经pandas.groupby将熊猫DataFrame分为两列,并计算平均时间和中值时间。我得到的数据集看起来与此类似:
Size Category Average Time Median Time
1 A 0.002056385 0.000310995
B 0.000310995
C 0.000310995
10 A 0.001852681
B 0.000310995
C 0.000310995
Run Code Online (Sandbox Code Playgroud)
我想将此表导出为excel,然后将时间列格式设置为Excel中的自定义格式,例如(hh:mm:ss.000)。换句话说,我想将时间视为毫秒级的时间。例如,以这种方式格式化的0.000310995显示为00:00:26.870(26.870秒)。
有人对如何完成这项壮举有任何见识吗?
更新:
通过使用,我已经靠近了一点to_datetime(df['Average Time'], unit='d')。现在,我的时间像1970-01-01 00:02:57.638400在DataFrame中一样格式化。但是,当to_excel用于导出到Excel时,它们的格式1970-01-01 00:02:58与Excel输出中的格式相同。此时,我只需要删除日期部分并增加毫秒精度即可实现我的目标。有什么想法吗?
非常感谢您提供的任何帮助-
全部 -
我期待从一个非常大的csv的第一行和最后一行创建一个pandas DataFrame.本练习的目的是能够轻松地从这些csv文件中的第一个和最后一个条目中获取一些属性.我使用以下方法抓住csv的第一行没有问题:
pd.read_csv(filename, nrows=1)
Run Code Online (Sandbox Code Playgroud)
我也可以通过各种方式抓取文本文件的最后一行,例如:
with open(filename) as f:
last_line = f.readlines()[-1]
Run Code Online (Sandbox Code Playgroud)
但是,将这两个东西放到一个DataFrame中会让我感到厌恶.有关如何最好地实现这一目标的任何见解?
编辑注意:我正在尝试完成此任务,而不是首先将所有数据加载到单个DataFrame中,因为我正在处理相当大(> 15MM行)的csv文件.
谢谢!
pandas ×4
python ×4
csv ×1
cumsum ×1
dataframe ×1
excel ×1
formatting ×1
milliseconds ×1
numpy ×1
timedelta ×1