python - 使用 apply() 从函数返回多个值并将其存储在不同的列中
问题描述
我的初始数据框是这样的: 原始数据框
我的代码:
import pandas as pd
import numpy as np
def visualize_weather():
df=pd.read_csv('weather.csv')
def break_date(date):
day=date[-2:]
month=date[-5:-3]
year=date[:4]
return day,month,year
df['Day'],df['Month'],df['Year']=df['Date'].apply(break_date)
return df[['Day','Month','Year','Date']]
visualize_weather()
我试图打破日、月和年的日期,并将它们存储到不同的列中。但我收到错误:
ValueError: too many values to unpack (expected 3)
有没有什么方法可以实现这一点,而无需为日、月和年制作 3 个不同的功能。
解决方案
您可以使用以下代码就地修改数据框。您应该直接更改函数内的数据框对象,否则您的更改将丢失。
import pandas as pd
df = pd.DataFrame(data={'dates': pd.bdate_range('2020-07-01', '2020-07-31', freq='B')})
def func(row):
df.loc[row.name, 'Day'] = row['dates'].day
df.loc[row.name, 'Month'] = row['dates'].month
df.loc[row.name, 'Year'] = row['dates'].year
print('Done')
df.apply(func, axis=1)
推荐阅读
- python - 给定一个 numpy 矩阵,生成结果联合分布的最有效方法是什么?
- java - 我可以根据负载在运行时在 kafka 中发送不同主题的消息吗?
- apache-flink - Apache Flink - 匹配多种模式
- vaadin - 非缓冲模式退出编辑器中的 Vaadin 14 Grid
- leaflet - 标签 z 顺序/可见性无法正常/可预测地工作
- android - 有没有办法不让您的应用程序从虚拟环境应用程序(如虚拟 xposed)启动/打开
- java - 如何调试使用 Keycloak 的 Angular/Java/Spring 应用程序?
- java - 使用 Selenium 和 Java 获取可滚动表中所有元素的列表
- python - 使用 PyOpenSSL 从 .pfx 中提取 .cer 文件
- c# - 如何使用 Microsoft 身份平台身份验证在 ASP.NET Core Web 应用程序中获取 JWT 令牌?