我有一个像这样的代码和数据(在数据框中):
32 A
33 B
34 C
35 D
36 E
60 F
我有这样的数据(在熊猫系列中(那是字符串)):
60
32
32
32
32,33
35
34,35,36
现在我想要这样的输出(在数据框中):
60 F
32 A
32 A
32 A
32,33 A,B
35 D
34,35,36 C,D,E
我怎么能在python中做到这一点? 请帮帮我
答案 0 :(得分:2)
您似乎需要使用list
使用双嵌套dict
的值替换list comprehension
中的值。
对于第一列的dict
需要set_index
(如有必要),然后按[]
选择列['b']
。
print (L)
[[60], [32], [32], [32], [32, 33], [35], [34, 35, 36]]
d = df1.set_index('a')['b'].to_dict()
print (d)
{32: 'A', 33: 'B', 34: 'C', 35: 'D', 36: 'E', 60: 'F'}
L1 = [[d[y] for y in x] for x in L]
print (L1)
[['F'], ['A'], ['A'], ['A'], ['A', 'B'], ['D'], ['C', 'D', 'E']]
df = pd.DataFrame({'a':L, 'b':L1})
print (df)
a b
0 [60] [F]
1 [32] [A]
2 [32] [A]
3 [32] [A]
4 [32, 33] [A, B]
5 [35] [D]
6 [34, 35, 36] [C, D, E]
如果需要字符串添加join
:
L1 = [','.join([d[y] for y in x]) for x in L]
print (L1)
['F', 'A', 'A', 'A', 'A,B', 'D', 'C,D,E']
df = pd.DataFrame({'a':[','.join(x) for x in L], 'b':L1})
print (df)
a b
0 60 F
1 32 A
2 32 A
3 32 A
4 32,33 A,B
5 35 D
6 34,35,36 C,D,E
编辑:
如果L
是list
的{{1}}:
string
答案 1 :(得分:0)
我认为这就是你想要的。 列一个清单:
list = [[60], [32], [32], [32], [32, 33], [35], [34, 35, 36]]
使用字典:
dictionary = {60:"F", 32:"A", 33:"B", 34:"C", 35:"D", 36:"E"}
然后:
for element in list:
string = ""
for element2 in element:
string += element2
string += ","
string = string[:-1]
string += " "
for element2 in element:
string += dictionary[element2]
string += ","
string = string[:-1]
print(string)