首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Pandas dataframe将NaN和NaT

Pandas dataframe将NaN和NaT
EN

Stack Overflow用户
提问于 2019-03-12 06:16:18
回答 1查看 317关注 0票数 0

我正在做的是我已经生成了一个熊猫的DataFrame:

代码语言:javascript
运行
复制
df_output = pd.DataFrame(columns={"id","Payout date", "Amount"}

在'Payout date‘列中是一个日期时间,在'Amount’列中是一个浮点数。我从csv中获取每一行的值:

代码语言:javascript
运行
复制
df=pd.read_csv("file.csv", encoding = "ISO-8859-1", low_memory=False)

但是当我赋值时:

代码语言:javascript
运行
复制
df_output.loc[df_output['id'] == index, 'Payout date'].iloc[0]=(parsed_date)
pay=payments.get()
ref=refunds.get()
df_output.loc[df_output['id'] == index, 'Amount'].iloc[0]=(pay+ref-for_next_day)

我打印了列'Payout date‘和' amount’,它只打印id,NaT表示支出,NaN表示金额,即使在将它们转换为浮点数时也是如此

代码语言:javascript
运行
复制
df_output['Amount']=pd.to_numeric(df_output['Amount'])
df_output['Payout date'] = pd.to_datetime(df_output['Payout date'])

我还尝试在将值传递给DataFrame之前对它们进行强制转换,但没有成功,所以我得到的结果是:

代码语言:javascript
运行
复制
id Payout date  Amount
1         NaT     NaN
2         NaT     NaN
3         NaT     NaN
4         NaT     NaN
5         NaT     NaN

取而代之的是,我正在寻找类似这样的东西:

代码语言:javascript
运行
复制
id       Payout date  Amount
1         2019-03-11     3.2
2         2019-03-11     3.2
3         2019-03-11     3.2
4         2019-03-11     3.2
5         2019-03-11     3.2

编辑

代码语言:javascript
运行
复制
print(df_output.head(5))
print(df.head(5))

id Payout date  Amount
1         NaT     NaN
2         NaT     NaN
3         NaT     NaN
4         NaT     NaN
5         NaT     NaN

id       Created (UTC)    Type Currency  Amount    Fee     Net
1 2016-07-27 13:28:00  charge      mxn   672.0  31.54  640.46
2 2016-07-27 15:21:00  charge      mxn   146.0   9.58  136.42
3 2016-07-27 16:18:00  charge      mxn   200.0  11.83  188.17
4 2016-07-27 17:18:00  charge      mxn   146.0   9.58  136.42
5 2016-07-27 18:11:00  charge      mxn   286.0  15.43  270.57
EN

回答 1

Stack Overflow用户

发布于 2019-03-13 06:02:29

可能最简单的做法就是重命名正在加载的数据帧的列:

代码语言:javascript
运行
复制
df = pd.read_csv("file.csv", encoding = "ISO-8859-1", low_memory=False, index_col='id')
df.columns(rename={"Created (UTC)":'Payout Date'}, inplace=True)

df_output = df[['Payout Date', 'Amount']]

编辑:如果您试图将一个数据帧中的列分配给另一个数据帧中的列,只需执行以下操作:

代码语言:javascript
运行
复制
output_df['Amount'] = df['Amount']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55111233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档