gpt4 book ai didi

python - 使用循环更新 Python 数据框的特定行和列

转载 作者:行者123 更新时间:2023-12-03 19:42:43 24 4
gpt4 key购买 nike

我有一个看起来像这样的数据集:

df = pd.DataFrame({'Country': ['PL', 'PL', 'PL', 'PL', 'UK', 'UK', 'US', 'US', 'US'],
'Val1': ['y1', 'b', 'c', 'd', 'y2', 'b', 'y3', 'b', 'c'],
'Val2': ['x1', 'b', 'c', 'd', 'x2', 'b', 'x3', 'b', 'c']})

Out[34]:
Country Val1 Val2
0 PL y1 x1
1 PL b b
2 PL c c
3 PL d d
4 UK y2 x2
5 UK b b
6 US y3 x3
7 US b b
8 US c c

我想要做的是用同一行中的 Val1 更新每个国家/地区第一行的 Val2。所以,我希望 x1 变成 y1,x2 变成 y2,x3 变成 y3,依此类推。

我尝试过的是以下内容:
countries = df['Country'].unique()
for c in countries:
df.loc[df['Country'] == c, 'Val2'].iloc[0] = df.loc[df['Country'] == c, 'Val1'].iloc[0]

这个循环有效,但它不会更新我的数据框。所以我认为我的问题是了解如何为特定的行/列/值更新数据帧。

什么是正确的方法呢?

附注。如果有人能解释为什么我的解决方案不起作用,那就太好了。

最佳答案

使用 .drop_duplicates.loc

df.loc[df.drop_duplicates(subset=['Country'],keep='first').index,'Val2'] = df['Val1']


print(df)

Country Val1 Val2
0 PL y1 y1
1 PL b b
2 PL c c
3 UK y2 y2
4 UK b b
5 UK c c
6 US y3 y3
7 US b b
8 US c c

关于python - 使用循环更新 Python 数据框的特定行和列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60951373/

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