数据帧理解

2024-05-07 13:26:00 发布

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

问题:将一个新列添加到一个数据帧中,并根据条件,在一行类似于列表理解的代码中填充来自另一个数据帧的列的值

示例代码:

我用一些瞳孔信息创建了一个名为df的数据帧

data = {'name': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'], 
        'year': [2012, 2012, 2013, 2014, 2014], 
        'reports': [4, 24, 31, 2, 3]}
df = pd.DataFrame(data, index = ['Cochice', 'Pima', 'Santa Cruz', 
        'Maricopa', 'Yuma'])

然后是第二个数据帧,名为df\u extra,它有一个表示年份的字符串:

extra_data = {'year': [2012, 2013, 2014],
       'yr_string': ['twenty twelve','twenty thirteen','twenty fourteen']}
df_extra = pd.DataFrame(extra_data)

现在,如何将值yr_string作为新列添加到df中,其中数字年份在一行代码中匹配?你知道吗

我可以很容易地用几个for循环来实现这一点,但是我真的很想知道这是否可以用一行来实现,类似于列表理解?你知道吗

我已经在这里搜索了一些问题,但是没有讨论根据一行中的条件从另一个数据帧向现有数据帧添加新列。你知道吗


Tags: 数据代码示例dataframedf列表datastring
1条回答
网友
1楼 · 发布于 2024-05-07 13:26:00

您可以^{}年列上的数据框。你知道吗

df.merge(df_extra, how='left', on=['year'])
#     name  reports  year        yr_string
# 0  Jason        4  2012    twenty twelve
# 1  Molly       24  2012    twenty twelve
# 2   Tina       31  2013  twenty thirteen
# 3   Jake        2  2014  twenty fourteen
# 4    Amy        3  2014  twenty fourteen

基本上,这表示“将数据从df_extra拉入dfyear列在df中匹配的任何地方”。注意这将返回一个副本,而不是就地修改数据帧。你知道吗

列表理解仍然是Python循环(这在技术上可能并不完全准确)。使用^{}方法,您可以利用Pandas用于对其数据帧进行操作的向量化、优化的后端代码。应该快一点。你知道吗

相关问题 更多 >