簡體   English   中英

嘗試在Pandas數據框中添加列時,為什么會得到np.NaN值?

[英]Why am I getting np.NaN values when trying to add a column to a Pandas dataframe?

我有一個熊貓數據框,其中日期信息存儲為字符串。 我想直接從每個日期中提取月份,所以我嘗試了以下操作:

import pandas as pd

df = pd.DataFrame([['2015-04-16', 5], ['2014-05-01', 6]],columns = ['date','units'])
df['month'] = df['month'].str[5,7]
print(df)

這給出了以下輸出

    date  units  month
0  2015-04-16      5    NaN
1  2014-05-01      6    NaN

NaN的dtype是float,我不知道為什么。 為什么不只用子字符串創建另一列?

如果你想切片每個字符串獲得子5至7,你需要: ,而不是一個,

>>> df = pd.DataFrame([['2015-04-16', 5], ['2014-05-01', 6]],columns = ['date','units'])
>>> df['month'] = df['date'].str[5:7]
>>> print(df)
         date  units month
0  2015-04-16      5    04
1  2014-05-01      6    05

我認為您的問題是您的切片無效:

In [7]:

df = pd.DataFrame([['2015-04-16', 5], ['2014-05-01', 6]],columns = ['date','units'])
df['date'].str[5,7]
​
Out[7]:
0   NaN
1   NaN
Name: date, dtype: float64

與此比較:

t='2015-04-16'
t[5,7]

這引發了:

TypeError:字符串索引必須是整數

我想你想要:

In [18]:

df = pd.DataFrame([['2015-04-16', 5], ['2014-05-01', 6]],columns = ['date','units'])
df['month'] = df['date'].str[5:7]
df
Out[18]:
         date  units month
0  2015-04-16      5    04
1  2014-05-01      6    05

因此,由於這是無效操作,因此熊貓返回NaN

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM