根据查询的不同,我的DF可以有一个带字符串的列或一个带有NaN的列。在
例如:
ID grams Projects
0 891 4.0 NaN
1 725 9.0 NaN
或者
^{pr2}$我可以处理其中的一个,但是当我试图创建一个通用的函数时,我失败得很惨。我需要忽略末尾的NaN,因为我将这个DF作为JSON响应发送,NaN给了我一个无效的格式。在
我现在的做法是:
#When Projects is a string
df['Projects'] = _df.groupby("ID")['External_Id'].apply(lambda x: ",".join(x))
#When Projects is NaN
df['Projects'] = _df.groupby("ID")['External_Id'].apply(lambda x: "")
我试图使用fillna()
并检查'x'的数据类型,但它总是返回为对象,因此我无法检查它是str还是NaN
另外,“Projects”列的结果不应允许重复。某些按ID分组的行具有重要信息,这些信息将被求和(“grams”),但“External_ID”不应出现多次。 例如:
ID grams External_Id
0 890 1.0 P1
1 890 1.0 P2
2 890 1.0 P2
3 724 1.0 P1
4 724 1.0 P1
结果应该是
ID grams Projects
0 890 3.0 P1, P2
1 724 2.0 P1
而不是
ID grams Projects
0 890 1.0 P1, P2, P2
1 724 1.0 P1, P1
我认为这应该有助于:
编辑:
我认为这个solution可能对你有用(只是作为@Ami答案的另一种选择)。在
假设你从
然后您可以对}应用相同的函数,处理nan和重复项:
^{pr2}$b
或{相关问题 更多 >
编程相关推荐