gpt4 book ai didi

python - 对 Pandas 数据框中的列使用 map()

转载 作者:太空狗 更新时间:2023-10-29 17:43:52 28 4
gpt4 key购买 nike

我的数据框中有一些列,我只想保留日期部分并删除时间部分。我列出了这些列:

list_of_cols_to_change = ['col1','col2','col3','col4']

我已经编写了一个函数来执行此操作。它获取列列表并将 dt.date 应用于列表中的每一列。

def datefunc(x):
for column in x:
df[column] = df[column].dt.date

然后我调用这个函数,将列表作为参数传递:

datefunc(list_of_cols_to_change )

我想使用类似 map() 的方法来完成此操作。基本上使用一个将列作为参数并对其进行更改的函数。然后我想使用 map() 将此函数应用于我拥有的列列表。像这样:

def datefunc_new(column):
df[column] = df[column].dt.date

map(datefunc_new,list_of_cols_to_change)

但这不起作用。我怎样才能完成这项工作?

最佳答案

最简单的是使用 lambda 函数和 apply :

df = pd.DataFrame({'col1':pd.date_range('2015-01-02 15:00:07', periods=3),
'col2':pd.date_range('2015-05-02 15:00:07', periods=3),
'col3':pd.date_range('2015-04-02 15:00:07', periods=3),
'col4':pd.date_range('2015-09-02 15:00:07', periods=3),
'col5':[5,3,6],
'col6':[7,4,3]})

print (df)
col1 col2 col3 \
0 2015-01-02 15:00:07 2015-05-02 15:00:07 2015-04-02 15:00:07
1 2015-01-03 15:00:07 2015-05-03 15:00:07 2015-04-03 15:00:07
2 2015-01-04 15:00:07 2015-05-04 15:00:07 2015-04-04 15:00:07

col4 col5 col6
0 2015-09-02 15:00:07 5 7
1 2015-09-03 15:00:07 3 4
2 2015-09-04 15:00:07 6 3

list_of_cols_to_change = ['col1','col2','col3','col4']
df[list_of_cols_to_change] = df[list_of_cols_to_change].apply(lambda x: x.dt.date)
print (df)
col1 col2 col3 col4 col5 col6
0 2015-01-02 2015-05-02 2015-04-02 2015-09-02 5 7
1 2015-01-03 2015-05-03 2015-04-03 2015-09-03 3 4
2 2015-01-04 2015-05-04 2015-04-04 2015-09-04 6 3

关于python - 对 Pandas 数据框中的列使用 map(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42529454/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com