Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “数据帧”将删除多行_Python_Pandas_Dataframe_Twitter - Fatal编程技术网

Python “数据帧”将删除多行

Python “数据帧”将删除多行,python,pandas,dataframe,twitter,Python,Pandas,Dataframe,Twitter,我有一个有很多tweet的数据帧,我想删除重复的tweet。tweets存储在fh1.df['tweets']中。我计算不重复的数量。j重复的数量。在else语句中,我删除了重复的行。在“如果我做一个新的列表”tweetChecklist中,我把所有好的推文都放进去了 好吧,如果我做I+j,我会变成原始推文的数量。那很好。但在else中,我不知道为什么,他删除了很多行,因为在for循环(1/10)之后,我的数据帧的形状要小得多 “fh1.df=fh1.df[fh1.df.Tweets!=curr

我有一个有很多tweet的数据帧,我想删除重复的tweet。tweets存储在fh1.df['tweets']中。我计算不重复的数量。j重复的数量。在else语句中,我删除了重复的行。在“如果我做一个新的列表”tweetChecklist中,我把所有好的推文都放进去了

好吧,如果我做I+j,我会变成原始推文的数量。那很好。但在else中,我不知道为什么,他删除了很多行,因为在for循环(1/10)之后,我的数据帧的形状要小得多

“fh1.df=fh1.df[fh1.df.Tweets!=current_tweet]是如何实现的 “行删除到多行

tweetChecklist = []
for current_tweet in fh1.df['Tweets']:
    if current_tweet not in tweetChecklist:
        i = i + 1
        tweetChecklist.append(current_tweet)
    else:
        j = j + 1
        fh1.df = fh1.df[fh1.df.Tweets != current_tweet]

fh1.df['Tweets'] = pd.Series(tweetChecklist)
注 Graipher的解决方案告诉您如何生成唯一的数据帧。我的答案告诉您当前操作删除太多行的原因(根据您的问题)

尾注 当您输入“else”语句删除重复的tweet时,您正在删除包含指定tweet的所有行。让我们演示一下:

import numpy as np
import pandas as pd

df = pd.DataFrame(data=np.random.randint(0, 10, (10, 5)), columns=list('ABCDE'))
这意味着什么:

Out[118]: 
   A  B  C  D  E
0  2  7  0  5  4
1  2  8  8  3  7
2  9  7  4  6  2
3  9  7  7  9  2
4  6  5  7  6  8
5  8  8  7  6  7
6  6  1  4  5  3
7  1  4  7  8  7
8  3  2  5  8  5
9  5  8  9  2  4
在您的方法中(假设您希望从“A”而不是“Tweets”中删除重复项),您将得到(即,只有非唯一的行)

如果您只是想让它变得独特,请实现Graipher的建议。如果要计算有多少个副本,可以执行以下操作:

total = df.shape[0]
duplicates = total - df.A.unique().size
注 Graipher的解决方案告诉您如何生成唯一的数据帧。我的答案告诉您当前操作删除太多行的原因(根据您的问题)

尾注 当您输入“else”语句删除重复的tweet时,您正在删除包含指定tweet的所有行。让我们演示一下:

import numpy as np
import pandas as pd

df = pd.DataFrame(data=np.random.randint(0, 10, (10, 5)), columns=list('ABCDE'))
这意味着什么:

Out[118]: 
   A  B  C  D  E
0  2  7  0  5  4
1  2  8  8  3  7
2  9  7  4  6  2
3  9  7  7  9  2
4  6  5  7  6  8
5  8  8  7  6  7
6  6  1  4  5  3
7  1  4  7  8  7
8  3  2  5  8  5
9  5  8  9  2  4
在您的方法中(假设您希望从“A”而不是“Tweets”中删除重复项),您将得到(即,只有非唯一的行)

如果您只是想让它变得独特,请实现Graipher的建议。如果要计算有多少个副本,可以执行以下操作:

total = df.shape[0]
duplicates = total - df.A.unique().size

for
循环中,通常有一种比使用
for
循环遍历数据帧更好的方法

在这种情况下,您真正想要的是将相等的tweet分组在一起,只保留第一条。这可以通过以下方式实现:

更好的是,甚至有一个明确的函数,其速度大约是原来的两倍:

df.drop_duplicates(subset="Tweets", keep="first")

for
循环中,通常有一种比使用
for
循环遍历数据帧更好的方法

在这种情况下,您真正想要的是将相等的tweet分组在一起,只保留第一条。这可以通过以下方式实现:

更好的是,甚至有一个明确的函数,其速度大约是原来的两倍:

df.drop_duplicates(subset="Tweets", keep="first")

只需使用
fh1.df=fh1.df.groupby(“Tweets”,as_index=False)?感谢您的回答:)每一条独特的推文都需要一条最先出现的推文。那么你到底想用这段代码实现什么呢?是的,它是有效的!非常感谢。我会把它写下来作为一个答案。只需使用
fh1.df=fh1.df.groupby(“Tweets”,as_index=False)。首先()
?@Graipher这句话做什么?感谢您的回答:)每一条独特的推文都需要一条最先出现的推文。那么你到底想用这段代码实现什么呢?是的,它是有效的!非常感谢。我会把它写下来作为一个答案。所以当有重复的时候,它会删除两行。我怎么能保留一行呢?Graipher的解决方案将保留其中一行。在原始代码中,您删除了两行。Graipher的解决方案不仅能满足您的需求,而且比您的原始代码快几个数量级。因此,当出现重复时,它会同时删除两行。我怎么能保留一行呢?Graipher的解决方案将保留其中一行。在原始代码中,您删除了两行。Graipher的解决方案不仅能满足您的需求,而且比您的原始代码快几个数量级。