当前位置: 首页 > 知识库问答 >
问题:

用时间戳格式的变量替换pandas数据帧上的year

孔鹤龄
2023-03-14

我使用以下代码创建了以下DF:

df = pd.read_table('https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/06_Stats/Wind_Stats/wind.data', sep = "\s+", parse_dates = [[0,1,2]]) 
type(df['Yr_Mo_Dy'][0])
for i in list(range(df.shape[0])):
    # assign all the observations under df['Yr_Mo_Dy'] to ts
    ts = df['Yr_Mo_Dy'][i]

    if df['Yr_Mo_Dy'][i].year >=2061:
        # replace the year in ts by year - 100
        ts.replace(year=df['Yr_Mo_Dy'][i].year - 100)
    else:
        continue

但循环什么也不做。我感觉这与变量赋值ts=df['yr_mo_dy'][I]有关。但我想不出另一种办法来完成这件事。

我试着在每次循环迭代之后分配一个变量,考虑到我在这篇文章中看到的答案。

共有1个答案

黄扬
2023-03-14

您应该以避免向量操作的手动循环为目标。

在这种情况下,可以使用numpy.where创建条件序列:

df = pd.DataFrame({'A': pd.to_datetime(['2018-01-01', '2080-11-30',
                                        '1955-04-05', '2075-10-09'])})

df['B'] = np.where(df['A'].dt.year >= 2061,
                   df['A'] - pd.DateOffset(years=100), df['A'])

print(df)

           A          B
0 2018-01-01 2018-01-01
1 2080-11-30 1980-11-30
2 1955-04-05 1955-04-05
3 2075-10-09 1975-10-09
 类似资料:
  • 我有一个大熊猫时间帧,它有一个列,这个时间格式:例如(小时,分钟,秒)。这些值是通过熊猫从我的SQL数据库中提取的,具有以下查询函数 我想将这些时间值转换为分钟(或秒),因为我想对作为我的持续时间变量的值执行线性回归。我该怎么做呢?是否有一种方法可以将这些值(例如,将<code>14:30:00 示例数据帧:

  • 我有这样的数据框 我想改变每个日期值str如果他们匹配的条件 在()18 x='2016-17'19返回ses6中的TypeError回溯(最近一次调用)--- /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pandas/core/series.py in apply(self,func,

  • 我有一个中等大的(大约60,000行乘以15列)csv文件,我正在与Pandas一起工作。每一行代表一个人并包含个人数据。我想以匿名方式呈现数据。我想这样做的一种方法是在某个列中替换它们稀少的值。我最初是这样做的: 但每次运行它都冻结了我的系统。不幸的是,这意味着我没有有用的调试数据。有没有人知道这样做的正确方法?该列同时包含字符串和空值。

  • 我想在指定的时间戳范围内从数据帧中选择行的子集。 下面是我所做的,但它似乎没有工作。我正在尝试选择发生在01/01/2019 01:00和01/01/2021 01:00之间的行子集。 非常感谢。

  • 当我尝试将函数应用于Amount列时,我得到以下错误: 我试过使用Math模块中的.isnan应用函数我试过使用pandas.replace属性我试过使用pandas0.9中的.sparse data属性我也试过使用函数中的if NaN==NaN语句。我还看了这篇文章,如何在R数据帧中用0替换NA值?同时查看一些其他文章。我试过的所有方法都不起作用,或者不认识南。如有任何提示或解决方案,将不胜感激

  • 有两个这样的数据帧(示例) df1 df2 然后,我想加入df1和df2,但是我不知道如何做到这一点,因为在第二个df中我只有开始和结束时间。如何根据第二个df的数据将条件放在第一个df上? 这就是我想要的