如果熊猫DataFrame列中的值在字典的值中,如何返回字典键?
因此,对于下面的df,您将如何添加一列col3来返回字典键,即基于col1是否在字典的值中的odd或even?
df = pd.DataFrame({"col1": [1,2,3,4,5], "col2": [6,7,8,9,10]})
d = {"odd": [1,3,5,7,9], "even": [2,4,6,8,10]}
df["col3"] = np.where(df["col1"].isin(d.values), d.key, "") # ???我知道您可以使用%或其他工具来确定值是奇数还是偶数,以上只是一个例子,其他字典可能是我们需要阅读的某种类型的配置文件或json。
想要能够生产出这样的东西:
col1 col2 col3
0 1 6 odd
1 2 7 even
2 3 8 odd
3 4 9 even
4 5 10 odd发布于 2022-08-05 15:58:22
你可以试试这样的方法:
for key in d:
df.loc[df.col1.isin(d[key]), 'col3'] = key
print(df)输出:
col1 col2 col3
0 1 6 odd
1 2 7 even
2 3 8 odd
3 4 9 even
4 5 10 odd发布于 2022-08-05 14:32:40
你可以试试
df['col3'] = df['col1'].mod(2).map({0: 'even', 1: 'odd'})
# or
d = {v:k for k, lst in d.items() for v in lst}
df['col3'] = df['col1'].map(d)print(df)
col1 col2 col3
0 1 6 odd
1 2 7 even
2 3 8 odd
3 4 9 even
4 5 10 odd发布于 2022-08-05 14:43:12
import pandas as pd
df = pd.DataFrame({"col1": [1,2,3,4,5], "col2": [6,7,8,9,10]})
d = {"odd": [1,3,5,7,9], "even": [2,4,6,8,10]}
data = pd.DataFrame(d).stack().reset_index()[["level_1", 0]].to_dict()['level_1']
df.col1.map(data)https://stackoverflow.com/questions/73251340
复制相似问题