gpt4 book ai didi

python - 按月对数据帧进行排序,并找到每个月每列中的第一个非零值

转载 作者:太空宇宙 更新时间:2023-11-03 19:44:39 25 4
gpt4 key购买 nike

我需要将 200 列的 CSV(第一列是日期)加载到 python 中的 pandas 数据框中。我需要对数据进行排序并返回每个月的第一个非零值。我应该制作单独的数据框还是每个月,然后进行搜索?解决这个问题的最佳方法是什么?

df = pd.read_csv('loaddata.csv')
df['DATE'] = pd.to_datetime(df['DATE'], format='%m/%d/%Y')
df['Month']= pd.DatetimeIndex(df['DATE']).month


THe data looks like this:

Date Data_1 Data_2 Data_3
1/d/y 0 0 1
2/d/y 0 1 2
3/d/y 2 6 0
1/d/y 5 3 45
2/d/y 20 7 90
3/d/y 25 12 18


Returns:
Data_1 Data_2 Data_3
Jan 5 3 1
Feb 20 7 2
Mar 2 6 18

最佳答案

FebData_2 列出现错误:第一个非零是 1,而不是 7。

<小时/>

这是一种方法:

def first_non_zero(col):
"""Return the first non-zero value of a column, or nan if the column is all-zero"""
head = col[col != 0].head(1)
return np.nan if head.empty else head.values

df.groupby('Month').apply(lambda group: group[['Data_1', 'Data_2', 'Data_3']].apply(first_non_zero)) \
.reset_index(level=1, drop=True)

结果:

       Data_1  Data_2  Data_3
Month
1 5 3 1
2 20 1 2
3 2 6 18

关于python - 按月对数据帧进行排序,并找到每个月每列中的第一个非零值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60217992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com