如何从python中的整数列中获取前4位数字

Posted

技术标签:

【中文标题】如何从python中的整数列中获取前4位数字【英文标题】:How to get first 4 digits from an integer column in python 【发布时间】:2021-11-06 03:49:13 【问题描述】:

我正在尝试从整数格式的列中获取月份

'''dvd['yy'] = str(dvd['CalendarYearMonth'])[:3]
dvd['mon'] = str(dvd['CalendarYearMonth'])[4:6]'''

但得到以下输出

   CalendarYearMonth CountryCode  Dividends   yy mon
0             202108          CN      196.0  0     2
1             202109          CN      380.0  0     2
2             202108          IN        NaN  0     2
3             202109          IN      115.0  0     2

谁能帮我获得正确的输出 - dvd 是输入 DF

【问题讨论】:

因为你想要 int 或 sting 作为输出?对于 int,请检查 my answer 【参考方案1】:

试试这个:

dvd['yy'] = dvd['CalendarYearMonth'].astype(str).str[:3]
dvd['mon'] = dvd['CalendarYearMonth'].astype(str).str[4:6]

【讨论】:

感谢它的工作,非常简单,但我不清楚为什么需要第二个 str @Ashish 乐于助人 :P 需要额外的.str 的原因是因为它仍然是熊猫系列,您需要访问 str 访问器:)【参考方案2】:

试试这个:

dvd = pd.DataFrame( 
    'CalendarYearMonth': [202108.0, 202109.0, 202108.0, 202109.0],

)
dvd['yy'] = dvd['CalendarYearMonth'].apply(lambda x : str(x)[:4])
dvd['mon'] = dvd['CalendarYearMonth'].apply(lambda x : str(x)[4:6])
print(DVD)

输出:

CalendarYearMonth   yy      mon
0   202108.0        2021    08
1   202109.0        2021    09
2   202108.0        2021    08
3   202109.0        2021    09

【讨论】:

【参考方案3】:

如果日期已经是 int,请利用它

df['yy'] = df['CalendarYearMonth']//100
df['mon'] = df['CalendarYearMonth']-df['yy']*100

输出:

   CalendarYearMonth CountryCode  Dividends    yy  mon
0             202108          CN      196.0  2021    8
1             202109          CN      380.0  2021    9
2             202108          IN        NaN  2021    8
3             202109          IN      115.0  2021    9

【讨论】:

不知道任何特殊功能的智能方式,我喜欢这样的解决方案 或:dvd['mon'] = dvd['CalendarYearMonth'] % 100【参考方案4】:

要提供更多选项,您可以将包含日期的列转换为日期时间对象,然后提取年份和月份信息:

import pandas as pd

dvd = pd.DataFrame(
    'CalendarYearMonth': [201908, 202001, 202103, 202107],
)

dates = pd.to_datetime(dvd['CalendarYearMonth'], format='%Y%m')
dvd['yy'] = dates.dt.year
dvd['mon'] = dates.dt.month

它给出:

   CalendarYearMonth    yy  mon
0             201908  2019    8
1             202001  2020    1
2             202103  2021    3
3             202107  2021    7

【讨论】:

以上是关于如何从python中的整数列中获取前4位数字的主要内容,如果未能解决你的问题,请参考以下文章

如何将工作日中的整数列添加/减去日期时间列?

[hdu 1568] Fibonacci数列前4位

如何将文本列转换为 MS SQL Express 中的整数列?

如何从字节中获取子位作为单独的整数值?

如何比较纯数字数列中的数字大于某一个数.python?

Python练习题4.6输出前 n 个Fibonacci数