让我通过指出组合列不是字典来开头这个问题。生成的数据框在“组合”列中带有方括号-因此,它看起来像数据框内的列表,其格式为[key1:value1,key2:value2等]。
我正在尝试从中转换数据框:
import pandas as pd
test = pd.DataFrame({'apples':['red','green','yellow'], 'quantity':
[1,2,3],'tasteFactor':['yum','yum','yuck']})
apples quantity tasteFactor
0 red 1 yum
1 green 2 yum
2 yellow 3 yuck
对于这种格式,它将键和每行中的值组合到一个新列中:
apples quantity tasteFactor combined
0 red 1 yum ['apples':'red','quantity':'1','tastefactor':'yum']
1 green 2 yum ['apples':'green','quantity':'2','tastefactor':'yum']
2 yellow 3 yuck ['apples':'yellow','quantity':'3','tastefactor':'yuck']
试图将数据帧变成每行一个字典,但无法将其转换为列表。
test['combined'] = test.to_dict(orient='records')
结果新列不必是实际的列表类型。可能是字符串。
以前曾在此处提出此问题,但想在此问题的标题中澄清该问题。如何使用Python在DataFrame中的字典中创建列表
找到了以下密切相关的问题,并尝试对它们进行衍生,这使我半途而废,但似乎无法获得正确的格式。
您可以使用pandas数据框的apply方法进行操作
import pandas as pd
df = pd.DataFrame({'apples':['red','green','yellow'], 'quantity':
[1,2,3],'tasteFactor':['yum','yum','yuck']})
col_names = df.columns
def func(row):
global col_names
list_ = [str(b)+':'+str(a) for a,b in zip(row,col_names.values.tolist())]
return list_
x = list(map(func, df.values.tolist()))
df.loc[:,'combined'] = pd.Series(x)
# df
# apples quantity tasteFactor combined
# 0 red 1 yum [apples:red, quantity:1, tasteFactor:yum]
# 1 green 2 yum [apples:green, quantity:2, tasteFactor:yum]
# 2 yellow 3 yuck [apples:yellow, quantity:3, tasteFactor:yuck]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句