我的问题是:我有一个这样的 Dataframe
| x轴| x |
| --| ------------ |
| [{key1:value1}]| [{key1: value1}] |
| [{key2:value2]| [{key2: value2] |
我想在列表中添加一个包含dict中的值的列。
| x轴|y| y |
| --|--| ------------ |
| [{key1:value1}]|价值1| value1 |
| [{key1:value2]|价值2| value2 |
我试过这个:
df= df_list['mydf'].assign(y = (df_list['mydf']['x'])[0]['key1'] )
字符串
注意:我有一个dataframe的列表,df_list,因为它们将与concat合并
但是[0]似乎只得到第一行的值:
[{key1: value1}]
型
你可以试试这个dummy df:
df_test = {'a': pd.DataFrame({'item': ['blabla', 'blable'], 'x': [[{'a':1}],[{'a':2}] ]}), 'b': pd.DataFrame({'item': ['bl', 'le'], 'x': [[{'a':3}],[{'a':4}] ]}) }
df_test['a'].assign(y = df_test['a']['item']+"0")
型
产出:
| 项目|x轴|y| y |
| --|--|--| ------------ |
| 布拉布拉|['a':1}]| blabla0| blabla0 |
| 责备|['a':2}]| blable0| blable0 |
df_test['a'].assign(y = df_test['a']['x'][0])
型
输出量
Length of values (1) does not match length of index (2)
型
当期望值应该是dict时。我真的不明白pd想干什么
谢谢你,谢谢
3条答案
按热度按时间tvz2xvvm1#
你试过使用lambda函数吗?索引[“x”][0]将不起作用,因为pandas只会将[0]索引作为该列的第一个元素。lambda函数将在输入x上返回x[0][“a”],这是 Dataframe 中的奇异元素。这一工作原理:
个字符
xfb7svmp2#
使用
.explode()
提取列表中的元素。字符串
产生
型
owfi6suc3#
可以使用df.apply()将lambda函数应用于列。
您的示例数据框:
字符串
产出:
| x轴| x |
| --| ------------ |
| ['a':1}]| [{'a': 1}] |
| ['a':2}]| [{'a': 2}] |
使用.apply()和lambda:
型
产出:
| x轴|y| y |
| --|--| ------------ |
| ['a':1}]| 1| 1 |
| ['a':2}]|二个| 2 |