【发布时间】:2021-01-13 19:51:07
【问题描述】:
我对数据框进行了分组,如图所示,我注意到数字之间有一个小空格。这是正常的吗?我需要摆脱它还是它不会影响任何东西?
更新:我尝试了 .str.strip() 方法,但路径列中的所有内容都变成了 NaN
更新:这是我尝试打印选项时得到的结果:
【问题讨论】:
标签: python pandas list whitespace
我对数据框进行了分组,如图所示,我注意到数字之间有一个小空格。这是正常的吗?我需要摆脱它还是它不会影响任何东西?
更新:我尝试了 .str.strip() 方法,但路径列中的所有内容都变成了 NaN
更新:这是我尝试打印选项时得到的结果:
【问题讨论】:
标签: python pandas list whitespace
这是正常的,它不会影响你想要做的任何计算,虽然我没有遇到这样的错误,它似乎只是一个可视化的东西,不过,如果你想确保没有列表中的任何空格,您都可以在此特定代码行中进行以下更改。
df1 = df.groupby('jid').aggregate({'conversion': 'sum', 'path': lambda x: [int(n) for n in x.tolist()]}).reset_index()
这是一种非常幼稚的方法,欢迎提出任何建议。
编辑:
我之前的建议实际上是错误的,试试这段代码,它没有做任何特别的事情,只是迭代由.tolist() 方法生成的列表并将它们转换为整数,这样可以确保不会有任何空格
【讨论】:
在 lambda 函数中使用 Series.str.strip:
df1 = (df.groupby('jid').agg({'conversion':'sum', 'path': lambda x: x.str.strip().tolist()})
.reset_index())
或在groupby 之前通过DataFrame.assign 重新计算值:
df1 = (df.assign(path = df['path'].str.strip()).groupby('jid')
.agg({'conversion': 'sum', 'path': lambda x: x.tolist()})
.reset_index())
示例:
df = pd.DataFrame({
'path':[' 1','3','5' ,' 7 ','1',' 0'],
'conversion':[5,3,6,9,2,4],
'jid':list('aaabbb')
})
df1 = (df.groupby('jid').agg({'conversion':'sum', 'path': lambda x: x.str.strip().tolist()})
.reset_index())
print (df1)
jid conversion path
0 a 14 [1, 3, 5]
1 b 15 [7, 1, 0]
df1 = (df.assign(path = df['path'].str.strip()).groupby('jid')
.agg({'conversion': 'sum', 'path': lambda x: x.tolist()})
.reset_index())
print (df1)
jid conversion path
0 a 14 [1, 3, 5]
1 b 15 [7, 1, 0]
原文:
df1 = (df.groupby('jid')
.agg({'conversion': 'sum', 'path': lambda x: x.tolist()})
.reset_index())
print (df1)
jid conversion path
0 a 14 [ 1, 3, 5]
1 b 15 [ 7 , 1, 0]
【讨论】:
print(df['path'].tolist()) 检查是否有空格