为什么会有时间和日期一起显示?

时间:2019-05-24 23:06:40

标签: python pandas

我正在尝试使用pandas库,这是我为了学习新事物而想出的代码。

#scratch.py
import pandas as pd

df=pd.read_excel (r'C:\Users\Hussain\Desktop\Returns.xlsx', header= 0,       encoding='utf', sep= '|')
pd.set_option('display.max_rows', 50)
pd.set_option('display.max_columns', 50)
pd.set_option('display.width', 1000)


df.rename(columns={'Period Invested for': 'Investment Period', '₹10000    Invested on': 'Investment Date', 'Latest Value' : 'Current Value'}, inplace=True)

print(df)
$ python scratch.py
Investment Period   Investment Date         Current Value   ...
0                   2019-05-16 00:00:00     10427.4         ...
1                   2019-04-23 00:00:00     10127.5         ...
2                   2019-02-22 00:00:00     11029.6         ...
...

xlsx文件中的示例行:

3 Year,23-May-16,16633.59,66.34%,18.48%,13.52%,Jan-35

有人可以帮我知道为什么第二列(投资日期)中包含24小时格式的时间,而我正在研究的Excel没有提及时间吗?

2 个答案:

答案 0 :(得分:0)

Pandas确实将该列识别为“日期时间”格式。您可以在此处阅读有关该主题的更多信息: https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html

可以从日期时间格式中获取日期,例如:



export default (state = {}, action) => {

  switch (action.type) {

    case 'COMP_MOUNT':
      return 

    case 'ADD_DUEDATE':
      return { ...state, [action.payload.id]: action.payload }

    case 'ADD_DEEP_ITEM':
      return {
        ...state,
        [action.payload.dueDateId]: {
          ...state[action.payload.dueDateId],
          goals: state[action.payload.dueDateId].goals.concat(action.payload)
        }
      }
    case 'DELETE_DEEP_ITEM':


      // console.log(`action.length ${action}`)

      return {
        ...state,
        [action.payload.keyName]: {
          ...state[action.payload.keyName],
          goals: [
            ...state[action.payload.keyName].goals.slice(0, action.payload.index),
            ...state[action.payload.keyName].goals.slice(action.payload.index + 1)
          ]
        }
      }

    case 'EDIT_DEEP_ITEM':

      console.log(action)
      console.log(`state${state}`)

      const keyName = action.payload.keyName
      const goal = action.payload.goal
      const goals = [...state[keyName].goals];
      goals.splice(action.payload.index, 1, goal);

      return {
        ...state,
        [keyName]: {
          ...state[keyName],
          goals,
        }
      };

    default:
      return state;
  }
}

答案 1 :(得分:0)

Pandas倾向于将datetime用于日期列而不是date,这很好,因为在许多情况下,您可能需要在计算中“混合”日期和日期时间,因此更容易到处都有日期时间,然后允许日期有不同的行为(例如:“日期”应解释为像00:00:00这样的固定点,还是应该在00:00:0023:59:59.999999的范围内。 ..,如果您使用可识别时区的日期时间,并尝试将它们与DST转换日期上的“日期”进行比较,则可能还会出现一些问题。

但是您可以将任何列转换为所需的任何类型:

# A. convert value type as suggested in other answer: https://stackoverflow.com/a/56300512/952437
df['Investment Date'] = df['Investment Date'].dt.date

# B. Only change output style:
import datetime
def dt_as_date(val):
    if isinstance(val, (pd.Timestamp, datetime.datetime)):
        return str(val.date())
    return val
df.style.format({'Investment Date': dt_as_date})