我有一个框架(df1),它看起来像这样:
Date Name Category #
01/01/01 Vegetables A 15
01/01/01 Fruits A 10
01/01/01 Meat B 35
01/02/01 Vegetables A 7
01/03/01 Vegetables A 9
01/03/01 No Data No Data No Data
字符串
我想创建另一个类似这样的框架(df2):
Date Classification #
01/01/01 A 25
01/01/01 B 35
01/02/01 A 7
01/03/01 A 9
01/03/01 No Data No Data
型
另一个类似这样的框架:
Date Classification #
01/01/01 A 25
01/01/01 B 35
01/02/01 A 7
01/03/01 A 9
型
这基本上意味着按日期和类别(df1)对它们进行分类,然后按日期和类别(df2)对它们进行分类,并排除“无数据”
我做了这个:
length = len(df2)
for i in range length:
if df1 ['Category'] = "A":
df1['Date'].map(df.groupby('Date')['Category].sum())
型
这并没有给予我任何东西,因为我相信这仍然是不完整的。此外,我有一个错误:ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
4条答案
按热度按时间but5z9lq1#
您可以将所有
#
值转换为数值(强制No Data
为NaN
),然后在求和之前groupbyDate
和Category
,用No Data
填充NaN
并重置索引:字符串
输出量:
型
然后,您可以选择
df3
作为Category
中没有No Data
的行:型
输出量:
型
如果你愿意,你可以将
df3['#']
恢复为整数:型
输出量:
型
txu3uszq2#
试试这个:
字符串
您可以稍后重置索引:df2 = df2.reset_index()
型
删除“无数据”:
型
gcmastyq3#
验证码
字符串
df2:
型
型
结果:
型
我创建
df2
是因为你想要一个像df2
这样的DataFrame,最好不要创建df2
。生成最终结果而不创建
df2
的代码。型
产出:
型
示例代码
型
s3fp2yjn4#
另一个可能的解决方案:
字符串
输出量:
型