我有一个
csv
文件,我用 pandas
处理。该列称为 raw_value
我想检索此列中的唯一字符。
x=df.manual_raw_value.unique()
允许检索唯一行。但是,我希望检索此列中的所有字符。 这是: 字母表= 6 , 3 5 1 8 V O T R E A 2 。 é è / :
raw_value
6,35
11,68
VOTRE
AVEL AR VRO
2292
questions.
nb
les
937,99
à
et
TTC
1
620
Echéance
vos
ROB21
Pièce
AGRIAL
désignation
des
taux
13s
2
par
le
mois,
32
21/07/2016
FR
au
0
téléphonique
BROYEUR
et
ST
TVA
de
des
ECHEANCIER
à
ne
lieu
481,67
N°0016
de
ministère
de
20/11/2015
Si
vous
59
cas
EUR
3.19
2
contrôle
assurances
BAS
et
4423873
renseignements
6104219
C9DECOMPTEDIVERS
6635
DE
10825
EDIT_1
所有三个解决方案都完美运行。 我选了第二个
set(df.raw_value.apply(list).sum())
Hwever 它返回一些编码的字符。它与编码有关吗? 如何解码和显示真正的 char 。这是它打印的内容
{' ',
'!',
'"',
'%',
'&',
"'",
'(',
')',
'*',
'+',
',',
'-',
'.',
'/',
'0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9',
':',
'=',
'>',
'?',
'@',
'_',
'a',
'b',
'c',
'd',
'e',
'f',
'g',
'h',
'i',
'j',
'k',
'l',
'm',
'n',
'o',
'p',
'q',
'r',
's',
't',
'u',
'v',
'w',
'x',
'y',
'z',
'\x82',
'\x87',
'\x94',
'\xa1',
'\xa7',
'\xaa',
'\xab',
'\xac',
'\xae',
'\xaf',
'\xb0',
'\xb4',
'\xb9',
'\xbb',
'\xc2',
'\xc3',
'\xe2'}
您可以先将原始值转换为字符串列表,然后堆栈到 char df 并获取唯一元素。
df.applymap(list).raw_value.apply(pd.Series).stack().unique()
Out[620]: array(['6', ',', '3', ..., 'ô', 'D', 'M'], dtype=object)
您也可以通过将原始值转换为列表、连接列表然后获取列表的集合来做到这一点。
set(df.raw_value.apply(list).sum())
更简单的方法是直接将原始值连接到字符串,然后在其上应用集合,因为字符串本质上是一个列表。
set(df.raw_value.sum())
注意,第一种方法将在结果中包含 nan,而第二种和第三种方法将排除 nan。
我知道这个问题已经有人回答了,但这是另一种回答方式:
x = set(list(' '.join(manual_raw_value.values)))
还有一个办法:
from functools import reduce
reduce(lambda a, b: set((*a,*b)), df['raw_value'].apply(np.array))
如果您的数据框很大,但您知道列中出现了一些字符,您可以使用
strip()
删除这些字符来加快速度。此外,您可以将列转换为字符串并添加字符串,而不是添加列表。例如,以下代码假定您知道列中出现的数字 0123456789。
set(list(df['raw_value'].str.strip('01234566789').sum()))
我认为将原始值转换为列表并将它们连接起来不是一个好主意。它需要相当大的内存和时间来处理。声明集合并更新它会更快:
unique_characters = set()
df.raw_value.apply(lambda x: unique_characters.update(x))