gpt4 book ai didi

python - 将列表作为列添加到数据框中

转载 作者:行者123 更新时间:2023-12-03 23:11:51 24 4
gpt4 key购买 nike

假设我有以下列表:

cond_1 = [1,2]
cond_2 = [3,5]

还有以下数据框 df :
|----------|
| Column_1 |
|----------|
| x |
|----------|
| y |
|----------|
| y |
|----------|
| x |
|----------|

我想要做的是添加第二列 Column_2 .遵循以下标准:

1) 如果 Column_1包含 x , 在 Column_2 中添加一个值来自 cond_1 ;

2) 如果 Column_1包含 y , 在 Column_2 中添加一个值来自 cond_2
所需的输出应该是这样的:
|----------|----------|
| Column_1 | Column_2 |
|----------|----------|
| x | 1 |
|----------|----------|
| y | 3 |
|----------|----------|
| y | 5 |
|----------|----------|
| x | 2 |
|----------|----------|

我一直在尝试使用 pd.Series 来做到这一点:
df_x = df.loc[df['Column_1'] == "x"] #first I create a dataframe only with the x values
df_x['Column_2'] = pd.Series(cond_1)

然后我会为 y 重复同样的事情值,获得 df_y .

然而,这并没有成功。然后,我需要再次附加两个数据帧( df_xdf_y ),并且我丢失了我想从 df 维护的原始索引的信息.

最佳答案

您可以创建一个辅助类并在 .apply 中使用它。 ,例如:

class ReplaceWithNext:
def __init__(self, **kwargs):
self.lookup = {k: iter(v) for k, v in kwargs.items()}
def __call__(self, value):
return next(self.lookup[value])

然后将其用作:
df['Column_2' ] = df['Column_1'].apply(ReplaceWithNext(x=cond_1, y=cond_2))

这会给你:
  Column_1  Column_2
0 x 1
1 y 3
2 y 5
3 x 2

关于python - 将列表作为列添加到数据框中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60955136/

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