gpt4 book ai didi

python - 通过将其他列与字典匹配来更改数据框的列

转载 作者:行者123 更新时间:2023-12-01 09:01:26 25 4
gpt4 key购买 nike

我有一个情况:

postStr = """{
"zoneId":"0",
"id":["a","b","c","d","f","g"],
"currencycode":["USD"],

}"""


postData = json.loads(postStr, object_pairs_hook=OrderedDict)

我有一个数据框:

df = {
'id':['a','b','c','d','f','g','h','i','j','k'],
'B':['c','d','e','d','d','c','s','e','s','q'],
'S':['f','g','h','j','e','j','t','r','p','p']
}
df1 = pd.DataFrame(df)

现在我想要一个数据框,如果 id 在字典中,则 B 相应列变为 XX

输出:

    df = {
'id':['a','b','c','d','f','g','h','i','j','k'],
'B' :['XX','XX','XX','XX','XX','c','s','e','s','q'],
'S' :['f','g','h','j','e','j','t','r','p','p']
}
df1 = pd.DataFrame(df)

请帮忙

最佳答案

我认为需要isinloc :

df1.loc[df1['id'].isin(postData['id']), 'id'] = 'XX'
print (df1)
id B S
0 XX c f
1 XX d g
2 XX e h
3 XX d j
4 XX d e
5 XX c j
6 h s t
7 i e r
8 j s p
9 k q p

如果想要更动态的解决方案 - 使用 intersection对于 DataFrame 和字典中的列名称并在循环中设置值:

postStr = """{
"S":["f","h"],
"id":["a","b","c","d","f","g"],
"currencycode":["USD"]

}"""

postData = json.loads(postStr, object_pairs_hook=OrderedDict)
print (postData)
OrderedDict([('S', ['f', 'h']),
('id', ['a', 'b', 'c', 'd', 'f', 'g']),
('currencycode', ['USD'])])

df = {
'id':['a','b','c','d','f','g','h','i','j','k'],
'B':['c','d','e','d','d','c','s','e','s','q'],
'S':['f','g','h','j','e','j','t','r','p','p']
}
df1 = pd.DataFrame(df)

for col in df1.columns.intersection(postData.keys()):
df1.loc[df1[col].isin(postData[col]), col] = 'XX'
print (df1)
id B S
0 XX c XX
1 XX d g
2 XX e XX
3 XX d j
4 XX d e
5 XX c j
6 h s t
7 i e r
8 j s p
9 k q p

关于python - 通过将其他列与字典匹配来更改数据框的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52426408/

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