gpt4 book ai didi

python - 如何使用 Pandas 替换 DataFrame 中的列条目并创建字典新旧值

转载 作者:太空宇宙 更新时间:2023-11-04 09:41:14 25 4
gpt4 key购买 nike

我有一个包含如下数据的文件:

x y
z w
a b
a x
w y

我想创建一个包含以下替换字典的文件,其中每个字符串都有一个唯一的替换编号,该替换编号由字符串在文件中首次出现的顺序决定,从左到右和从上到下读取时底部(请注意,这应该创建,未提供):

{'x':1, 'y':2, 'z':3, 'w':4 , 'a':5, 'b':6}

输出文件为:

1 2
3 3
5 6
5 1
4 2

有什么有效的方法可以用 Pandas 创建处理后的文件和字典吗?

我想到了按照以下策略创建字典:

_counter = 0
def counter():
global _counter
_counter += 1
return _counter
replacements_dict = collections.defaultdict(counter)

最佳答案

您可以使用 factorizestack 创建的 MultiIndex 系列 , 然后 unstack最后写入文件 to_csv :

df = pd.read_csv(file, sep="\s+", header=None)

print (df)
0 1
0 x y
1 z w
2 a b
3 a x
4 w y

s = df.stack()
fact = pd.factorize(s)

#indexing is necessary
d = dict(zip(fact[1].values[fact[0]], fact[0] + 1))
print (d)
{'x': 1, 'y': 2, 'z': 3, 'w': 4, 'a': 5, 'b': 6}

对于新文件:

#values splited by ,
pd.Series(d).to_csv('dict.csv')
#read Series from file, convert to dict
d = pd.read_csv('dict.csv', index_col=[0], squeeze=True, header=None).to_dict()
print (d)
{'x': 1, 'y': 2, 'z': 3, 'w': 4, 'a': 5, 'b': 6}

df = pd.Series(fact[0] + 1, index=s.index).unstack()
print (df)

0 1
0 1 2
1 3 4
2 5 6
3 5 1
4 4 2

df.to_csv('out', index=False, header=None)

关于python - 如何使用 Pandas 替换 DataFrame 中的列条目并创建字典新旧值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51608495/

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