pandas 如何将这些天转换成整数?

tsm1rwdh  于 2023-03-06  发布在  其他
关注(0)|答案(2)|浏览(232)

一个问题。我在一列下面有一个列表,看起来像这样:
'[〈36 * Days〉,〈23 * Days〉]''我只想从这个列表中得到值36和23作为整数(这样我就可以得到这两个数字的平均值用于其他目的)。
我试过这样的方法:
一个月一个月一个月一个月一个月
但我一直得到AttributeError:只能将. dt访问器与类似日期时间的值一起使用
你知道怎么做吗?谢谢。

q3qa4bjr

q3qa4bjr1#

您可能有DateOffset您可以使用列表解析来访问repeat参数:

df['tdColumn'] = [[x.n for x in l] for l in df['tdColumn']]

示例:

df = pd.DataFrame({'tdColumn': [[pd.DateOffset(x) for x in range(3)]]})
print(df)

                                               tdColumn
0  [<0 * DateOffsets>, <DateOffset>, <2 * DateOffsets>]

df['tdColumn'] = [[x.n for x in l] for l in df['tdColumn']]
print(df)

    tdColumn
0  [0, 1, 2]

如果您有不同的Offset(例如days),则可能需要不同的访问器(例如.days):

df = pd.DataFrame({'tdColumn': [[pd.DateOffset(days=x) for x in range(3)]]})
print(df)
                                                             tdColumn
0  [<DateOffset: days=0>, <DateOffset: days=1>, <DateOffset: days=2>]

df['tdColumn'] = [[x.days for x in l] for l in df['tdColumn']]
print(df)
    tdColumn
0  [0, 1, 2]
biswetbf

biswetbf2#

可以在列表解析中提取属性n,因为列中有列表:

df = pd.DataFrame({'tdColumn':[[pd.offsets.DateOffset(36),
                               pd.offsets.DateOffset(23)]]})

df['tdColumn'] = [[x.n for x in l] for l in df['tdColumn']]
#alternative
df['tdColumn'] = df['tdColumn'].apply(lambda l: [x.n for x in l])
print (df)

   tdColumn
0  [36, 23]

然后对于整型列使用DataFrame.explode

df = df.explode('tdColumn')
print (df)
  tdColumn
0       36
0       23

另一个想法:

df = df.explode('tdColumn')

df['tdColumn'] = [x.n for x in df['tdColumn']]
print (df)

   tdColumn
0        36
0        23

原始溶液:

df = pd.DataFrame({'tdColumn':[pd.offsets.DateOffset(36),
                               pd.offsets.DateOffset(23)]})

df['tdColumn'] = df['tdColumn'].apply(lambda x: x.n)
    
print (df)
   tdColumn
0        36
1        23

相关问题