gpt4 book ai didi

python - Pandas 正在打印比预期更多的行

转载 作者:行者123 更新时间:2023-12-05 07:24:23 24 4
gpt4 key购买 nike

目前我在数据库上工作,我尝试用 pandas 对我的行进行排序。我有一个名为“sessionkey”的列,它指的是一个 session 。所以每一行都可以分配给一个 session 。我试图将数据分离到这些 session 中。

此外,可以有重复的行。我试图从 pandas 中删除具有 drop_duplicates 函数的那些。

df = pd.read_csv((path_of_data+'part-00000-9d3e32a7-87f8-4218-bed1-e30855ce6f0c-c000.csv'), keep_default_na=False, engine='python')
tmp = df['sessionkey'].values #I want to split data into different sessions
tmp = np.unique(tmp)


df.set_index('sessionkey', inplace=True)
watching = df.loc[tmp[10]].drop_duplicates(keep='first') #here I pick one example
print(watching.sort_values(by =['eventTimestamp', 'eventClickSequenz']))
print(watching.info())

我原以为这可以正常工作,但是当我尝试通过打印拆分的数据帧来检查我的结果时,输出对我来说看起来很奇怪。例如,我打印了 Dataframe 的长度,它表示 38 行 x 4 列。但是当我打印同一个 Dataframe 时,显然有超过 38 行并且其中仍然有重复项。

我已经尝试使用唯一索引拆分数据:

comparison = pd.DataFrame()

for index, item in enumerate(df['sessionkey'].values):
if item==tmp: comparison = comparison.append(df.iloc[index])

comparison.drop_duplicates(keep='first', inplace=True)
print(comparison.sort_values( by = ['eventTimestamp']))

但问题还是一样。

输出似乎也遵循某种模式。假设我们有 38 个条目。然后 pandas 返回前 1-37 个条目,然后附加 2-38 个条目。所以最后一个被省略,然后整个列表被移动并再次打印。

当我返回 numpy 值时,只有 38 行不同的行。那么这是 Pandas 打印功能的问题吗?我的代码有错误吗? pandas 是否有非唯一索引的问题?

编辑:

好的,我知道问题出在哪里了。我想查看一个长数据框,所以我使用了:

pd.set_option('display.max_rows', -1)

现在我们可以使用一些示例数据:

data = np.array([[119, 0], [119, 1], [119, 2]])
columns = ['sessionkey', 'event']
df = pd.DataFrame(data, columns = columns)
print(df)

现在打印出来是这样的:

    sessionkey  event
0 119 0
1 119 1
1 119 1
2 119 2

虽然我希望它看起来像这样:

   sessionkey  event
0 119 0
1 119 1
2 119 2

我以为我的 Dataframe 形状不对,但事实并非如此。所以中间的事件被打印了一倍。这是错误还是有意的输出?

最佳答案

因此 drop_duplicates() 在删除行时不查看索引,而是查看整行。但它确实有一个有用的 subset kwarg,它允许您指定要使用的行。

你可以试试下面的方法

df = pd.read_csv((path_of_data+'part-00000-9d3e32a7-87f8-4218-bed1-e30855ce6f0c-c000.csv'), keep_default_na=False, engine='python')

print(df.shape)
print(df["session"].nunique()) # number of unique sessions


df_unique = df.drop_duplicates(subset=["session"],keep='first')

# these two numbers should be the same
print(df_unique.shape)
print(df_unique["session"].nunique())

关于python - Pandas 正在打印比预期更多的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55469888/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com