我有一个数据框,其中的一列作为字典。我想将其解包成多列(即,代码,金额为以下Raw列格式的单独列)。以下代码曾经与pandas
v0.22(现在是(0.23))一起工作,给出了索引错误:
pd.DataFrame.from_records(df.col_name.fillna(pd.Series([{'code':'not applicable'}], index=df.index)).values.tolist())
ValueError: Length of passed values is 1, index implies x
我在Google / Stack溢出中搜索了数小时,之前提出的其他解决方案均无法正常工作。
原始列格式:
dict_codes
0 {'code': 'xx', 'amount': '10.00',...
1 {'code': 'yy', 'amount': '20.00'...
2 {'code': 'bb', 'amount': '30.00'...
3 {'code': 'aa', 'amount': '40.00'...
10 {'code': 'zz', 'amount': '50.00'...
11 NaN
12 NaN
13 NaN
有没有人有什么建议?
谢谢
df = pd.DataFrame(dict(
codes=[
{'amount': 12, 'code': 'a'},
{'amount': 19, 'code': 'x'},
{'amount': 37, 'code': 'm'},
np.nan,
np.nan,
np.nan,
]
))
df
codes
0 {'amount': 12, 'code': 'a'}
1 {'amount': 19, 'code': 'x'}
2 {'amount': 37, 'code': 'm'}
3 NaN
4 NaN
5 NaN
apply
与 pd.Series
确保dropna
先
df.codes.dropna().apply(pd.Series)
amount code
0 12 a
1 19 x
2 37 m
df.drop('codes', 1).assign(**df.codes.dropna().apply(pd.Series))
amount code
0 12.0 a
1 19.0 x
2 37.0 m
3 NaN NaN
4 NaN NaN
5 NaN NaN
tolist
和 from_records
相同的想法,但跳过 apply
pd.DataFrame.from_records(df.codes.dropna().tolist())
amount code
0 12 a
1 19 x
2 37 m
df.drop('codes', 1).assign(**pd.DataFrame.from_records(df.codes.dropna().tolist()))
amount code
0 12.0 a
1 19.0 x
2 37.0 m
3 NaN NaN
4 NaN NaN
5 NaN NaN
问题内容: 我是熊猫的新手,似乎无法将此功能与merge函数配合使用: 在列a左连接时,我想通过JOINED KEYS更新公共列。请注意,c列中的最后一个值来自LEFT表,因为没有匹配项。 如何使用Pandas合并功能执行此操作?谢谢。 问题答案: 一种方法是将a列设置为索引和: 注意:仅执行左联接(不合并),因此,除了set_index之外,还需要包括中不存在的其他列。
问题内容: 我有以下数据(2列4行): 我正在尝试将列合并为一列,看起来像这样(1列,8行): 我使用的熊猫数据框,并使用不同的功能,但没有成功(试过,等)。非常感激任何的帮助! 问题答案: 更新资料 熊猫为此有一个内置的方法,它可以根据您的意愿看到其他答案。 这是我很多年前才知道的第一个答案:
我今天观察到,选择两列或更多列的数据帧可能比只选择一列慢得多。 如果我使用loc或iloc选择多个列,并且我使用list传递列名或索引,那么与使用iloc的单个列或多个列选择相比,性能会下降100倍(但没有传递列表) 示例: 单列选择: 两列选择: 只有此选择的工作方式与预期相同:[编辑] 机制上的差异是什么?为什么差异如此之大? [编辑]:正如@run-out指出的,pd。系列似乎比pd处理得快
我只是试图通过整数访问命名的熊猫列。 您可以使用按位置选择行。 但是如何通过整数选择列呢? 我的数据框:
拿着字典: 我如何把这个字典变成一个数据框,其中的值是列?即。我想要一个数据框显示: 这种形式似乎根本得不到! 谢谢 这是一个不同的问题,另一个问题只是问如何将字典的值放入数据帧,我问的是如何获得我概述的特定形式
问题内容: 所以我有一个数据框df1,看起来像下面的样子: 我想按A列分组,然后对B列求和,同时将值保留在C列中。 问题是,当我说df.groupby(’A’)。sum()列C被删除时,返回 当我进行分组和求和时,如何解决这个问题并保留C列? 问题答案: 唯一的方法是将C包含在groupby中(groupby函数可以接受列表)。 试试看: 需要注意的另一件事是,如果需要在聚合后使用df,则还可以使