尝试使用列表中的值填充表中的新列,并使用同一表中现有列的值作为索引

2024-03-29 05:32:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一张熊猫桌。列中有时间戳的。 我已经把时间戳解析成一些可以理解的东西。 我也已经得到了一周中的一天作为一个整数。 我想要的是,添加一个新的列,其中包含星期几的名称。 我有一份名单(周一至周日)。 使用现有weekdayINT列中的值作为工作日名称列表的索引值来填充新列,添加新列的正确方法是什么。你知道吗

我有:

weekdays = ['mon','tue','wed','thur','fri','sat','sun']
def calc_time(df):

    df['parsedtime'] = pandas.to_datetime(df['Timestamp'], unit='s')
    df['weekdayINT'] = df['parsedtime'].dt.dayofweek
    df['weekdayName'] = numpy.nan
    #????Not sure how to fill this new column.
    return df

对熊猫来说非常陌生,还上过数据科学课。我知道我可以遍历数据帧行。但是有超过200万排。 我相信熊猫有更好的方法。似乎使用另一列中的值作为列表的索引以用值填充新列是一件常见的事情。你知道吗

谢谢你的帮助。你知道吗


Tags: to数据方法名称df列表时间整数
1条回答
网友
1楼 · 发布于 2024-03-29 05:32:02

pandas有一个名为day_name的内置函数:

# sample data
df = pd.DataFrame(pd.date_range('2019-01-01', '2019-01-10'))

# use day_name
df['day of week'] = df[0].dt.day_name()

           0 day of week
0 2019-01-01     Tuesday
1 2019-01-02   Wednesday
2 2019-01-03    Thursday
3 2019-01-04      Friday
4 2019-01-05    Saturday
5 2019-01-06      Sunday
6 2019-01-07      Monday
7 2019-01-08     Tuesday
8 2019-01-09   Wednesday
9 2019-01-10    Thursday

或者你可以用dict map

# sample data
df = pd.DataFrame(pd.date_range('2019-01-01', '2019-01-10'))
# int of day of week
df['day_of_week'] = df[0].dt.dayofweek
# map with a dict
df['day_of_week_name'] = df['day_of_week'].map({0:'mon', 1:'tue',
                                                2:'wed', 3:'thur',
                                                4:'fri', 5:'sat', 6:'sun'})

           0  day_of_week day_of_week_name
0 2019-01-01            1              tue
1 2019-01-02            2              wed
2 2019-01-03            3             thur
3 2019-01-04            4              fri
4 2019-01-05            5              sat
5 2019-01-06            6              sun
6 2019-01-07            0              mon
7 2019-01-08            1              tue
8 2019-01-09            2              wed
9 2019-01-10            3             thur

相关问题 更多 >