[英]Convert dataframe column with type "object" to a set()
Got a dataframe df with a column "Id"得到一个带有“Id”列的数据框 df
Id
0 -KkJz3CoJNM
1 08QMXEQbEWw
2 0ANuuVrIWJw
3 0pPU8CtwXTo
4 1-wYH2LEcmk
I need to convert column "Id" into a set() but我需要将列“Id”转换为 set() 但是
set_id = set(df["Id"])
print(set_id)
returns返回
{'Id'}
instead of a set() of the strings from column "Id"?而不是来自“Id”列的字符串的 set() ?
For me working correctly if exist only one id
column:如果只存在一个
id
列,我就可以正常工作:
set_id = set(df["Id"])
print(set_id)
{'1-wYH2LEcmk', '08QMXEQbEWw', '0pPU8CtwXTo', '0ANuuVrIWJw', '-KkJz3CoJNM'}
But if there is more columns names id
then df['id']
return DataFrame
, so set(df["Id"])
return unique columns names:但是如果有更多的列名
id
然后df['id']
返回DataFrame
,所以set(df["Id"])
返回唯一的列名:
#test for 2 columns with sample data
df = pd.concat([df, df], axis=1)
print (df["Id"])
Id Id
0 -KkJz3CoJNM -KkJz3CoJNM
1 08QMXEQbEWw 08QMXEQbEWw
2 0ANuuVrIWJw 0ANuuVrIWJw
3 0pPU8CtwXTo 0pPU8CtwXTo
4 1-wYH2LEcmk 1-wYH2LEcmk
set_id = set(df["Id"])
print(set_id)
{'Id'}
Because:因为:
L = list(df["Id"])
print(L)
['Id', 'Id']
working same like工作一样
L = list(df["Id"].columns)
print(L)
['Id', 'Id']
and similar for sets:和类似的集合:
set_id = set(df["Id"].columns)
print(set_id)
{'Id'}
Possible solution for deduplicate columns:重复数据删除列的可能解决方案:
c = df.columns.to_series()
df.columns += c.groupby(c).cumcount().astype(str).radd('.').replace('.0','')
print (df)
Id Id.1
0 -KkJz3CoJNM -KkJz3CoJNM
1 08QMXEQbEWw 08QMXEQbEWw
2 0ANuuVrIWJw 0ANuuVrIWJw
3 0pPU8CtwXTo 0pPU8CtwXTo
4 1-wYH2LEcmk 1-wYH2LEcmk
Or if always same values remove duplicated columns:或者如果总是相同的值删除重复的列:
df = df.loc[:, ~df.columns.duplicated()]
print (df)
Id
0 -KkJz3CoJNM
1 08QMXEQbEWw
2 0ANuuVrIWJw
3 0pPU8CtwXTo
4 1-wYH2LEcmk
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.