如何将 pandas loc 索引器转换为字符串?
How can I convert pandas loc indexer to a string?
我有像 -
这样的 csv 数据框
print(test.loc[1])
outlook sunny
temperature mild
humidity normal
wind weak
playtennis yes
Name: 1, dtype: object
我想把它转换成类似 -
outlook.sunny.temperature.mild.humidity.normal.wind.weak.playtennis.yes
我怎样才能做到这一点?
让ser = test.loc[1]
。
- 您可以使用
.to_dict()
、 将该系列转换为字典
- 然后将字典转换成key/value个元组的列表,其中
.items()
、
- 然后用
itertools.chain
将元组合并为一个列表,最后
- 用
.join()
加入带句点的列表项。
Python代码:
from itertools import chain
'.'.join(chain.from_iterable(ser.to_dict().items()))
#'outlook.sunny.temperature.mild.humidity.normal....yes'
这是使用列表推导的一种方式 str.join
:
import pandas as pd
test = pd.DataFrame([['sunny', 'mild', 'normal', 'weak', 'yes']],
columns=['outlook', 'temperature', 'humidity', 'wind', 'playtennis'])
res = '.'.join([k+'.'+test[k].iloc[0] for k in test])
print(res)
'outlook.sunny.temperature.mild.humidity.normal.wind.weak.playtennis.yes'
或者,您可以 zip
列名和数据框 values
:
res = '.'.join(i+'.'+j for i, j in zip(test, test.values[0]))
我有像 -
这样的 csv 数据框print(test.loc[1])
outlook sunny
temperature mild
humidity normal
wind weak
playtennis yes
Name: 1, dtype: object
我想把它转换成类似 -
outlook.sunny.temperature.mild.humidity.normal.wind.weak.playtennis.yes
我怎样才能做到这一点?
让ser = test.loc[1]
。
- 您可以使用
.to_dict()
、 将该系列转换为字典
- 然后将字典转换成key/value个元组的列表,其中
.items()
、 - 然后用
itertools.chain
将元组合并为一个列表,最后 - 用
.join()
加入带句点的列表项。
Python代码:
from itertools import chain
'.'.join(chain.from_iterable(ser.to_dict().items()))
#'outlook.sunny.temperature.mild.humidity.normal....yes'
这是使用列表推导的一种方式 str.join
:
import pandas as pd
test = pd.DataFrame([['sunny', 'mild', 'normal', 'weak', 'yes']],
columns=['outlook', 'temperature', 'humidity', 'wind', 'playtennis'])
res = '.'.join([k+'.'+test[k].iloc[0] for k in test])
print(res)
'outlook.sunny.temperature.mild.humidity.normal.wind.weak.playtennis.yes'
或者,您可以 zip
列名和数据框 values
:
res = '.'.join(i+'.'+j for i, j in zip(test, test.values[0]))