【问题标题】:Replacing a dataframe's index value with dict's values?用字典的值替换数据框的索引值?
【发布时间】:2021-03-19 21:27:23
【问题描述】:

所以我正在尝试定义一个能够读取相关数据帧并替换 .csv 文件中字典值的索引值的函数。 我有这样的东西作为我的数据框:

            ARR
ID               
1           3
2           3
3           3
4           3
5           3
6           3
7           4
8           4
9           4
10          5

接下来,我有一个 .csv 文件,其中包含我的 ID 及其对应姓名(学生)。 我创建的函数是这样的:

def naming(x):
    with open(path) as csv_file:
        csv_reader = list(csv.reader(csv_file, delimiter=','))
        y = {}
        for i in csv_reader:
            y.setdefault(i[0],i[1])
        for j in x.index:
            if j == y.keys():
                x = x.replace([x.index], y.values())

我创建了一个 y 字典,其中键 = ID,值 = 名称。但是,我似乎对替换 x 数据帧的索引值背后的逻辑有疑问,我似乎无法使其工作。 每当我召唤我的函数命名(x)并将其应用于我的数据框时。这些值不会被替换。 有什么帮助吗?我在这里做错了什么?

【问题讨论】:

  • 如果您可以显示 csv 文件的内容以及您希望获得的结果,这将有助于理解您想要实现的目标。话虽如此,一个问题是你的函数没有返回任何东西,所以它可能没有给你你期望的东西。

标签: python pandas function csv dictionary


【解决方案1】:

这是一个简单的解决方案,假设您有所有 ID 的名称。

my_dict = {1:'jim', 2:'mike', 3:'sally', 4:'pete', 
           5:'helen',6:'max',7:'joe',8:'fred',9:'jane',10:'raul'}

d = {'ID': [1,2,3,4,5,6,7,8,9,10], 'ARR': [3,3,3,3,3,3,4,4,4,5]}
df = pd.DataFrame(data=d)

my_list=[]

for id_s in df['ID'].values:
    my_list.append(my_dict[id_s])
    
df['name']=my_list
df = df.set_index('name')  
df = df.drop('ID', 1) #remove this line if you want to keep the ID column

我还建议使用 pandas read_csv 阅读您的 csv 文件。确保在括号内替换您自己的文件路径。

df = pd.read_csv('./folder/files/filepath')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-22
    • 1970-01-01
    • 2018-01-31
    • 2020-02-15
    • 2018-05-01
    • 2018-01-28
    • 2022-08-18
    相关资源
    最近更新 更多