我有两个具有相同结构的数据框df和df_a. 是我需要重新整合到的df_a一个子集。本质上,有不同的行(具有不同的索引)已被操作。dfdfdf_adf
df下面是每个和的索引示例df_a。它们都具有相同的列结构,因此所有列都是相同的,只是行和行的索引不同。
>> df
index .. other_columns ..
0
1
2
3
. .
9999
10000
10001
[10001 rows x 20 columns]
>> df_a
index .. other_columns ..
5
12
105
712
. .
9824
9901
9997
[782 rows x 20 columns]
Run Code Online (Sandbox Code Playgroud)
因此,我只想用 中的相应行覆盖df具有 索引 的行。我检查了用另一个 df 中的行替换 Pandas df 中的行并替换 pandas 数据框中的行,但这些都没有告诉如何使用另一个数据框的索引来替换行中的值。df_adf_a
我尝试过使用
if df.loc[df['col_1']] == float:
print(df.loc[df['col_1']])
Run Code Online (Sandbox Code Playgroud)
但这是行不通的。我基本上只是想float在列中找到数据类型的所有内容,看看它是什么以及在哪里。我该如何去做呢?
我需要这样做,因为该列是一个对象,df.dtypes但在尝试对其进行字符串操作时,我发现TypeError有浮点数。
我有一个随机单词和名称的数据集,我正在尝试对所有相似的单词和名称进行分组。因此给出下面的数据框:
Name ID Value
0 James 1 10
1 James 2 2 142
2 Bike 3 1
3 Bicycle 4 1197
4 James Marsh 5 12
5 Ants 6 54
6 Job 7 6
7 Michael 8 80007
8 Arm 9 47
9 Mike K 10 9
10 Michael k 11 1
Run Code Online (Sandbox Code Playgroud)
我的伪代码类似于:
import pandas as pd
from fuzzywuzzy import fuzz
minratio = 95
for idx1, name1 in df['Name'].iteritems():
for idx2, name2 in df['Name'].iteritems():
ratio = fuzz.WRatio(name1, name2)
if ratio …Run Code Online (Sandbox Code Playgroud) 我有一个包含许多列的大型数据框。其中一列应该是唯一 ID,另一列是年份。不幸的是,Unique ID 列中有重复项。
我知道如何生成所有重复项的列表,但我真正想做的是将它们提取出来,以便只保留第一个条目(按年份)。例如,数据框目前看起来像这样(还有一堆其他列):
ID Year
----------
123 1213
123 1314
123 1516
154 1415
154 1718
233 1314
233 1415
233 1516
Run Code Online (Sandbox Code Playgroud)
我想要做的是将此数据框转换为:
ID Year
----------
123 1213
154 1415
233 1314
Run Code Online (Sandbox Code Playgroud)
在仅将那些重复项存储在另一个数据帧中时:
ID Year
----------
123 1314
123 1516
154 1415
233 1415
233 1516
Run Code Online (Sandbox Code Playgroud)
我可以逐年删除重复项以保留最旧的条目,但我不确定如何将重复项放入我可以存储为另一个数据框的列表中。
我该怎么做?
给定一个数据框
d = {'col1': [['how', 'are', 'you'], ['im', 'fine', 'thanks'], ['you', 'know'], [np.nan]],
'col2': [['tell', 'how', 'me', 'you'], ['who', 'cares'], ['know', 'this', 'padewan'], ['who', 'are', 'you']]
df = pd.DataFrame(data=d)
Run Code Online (Sandbox Code Playgroud)
我想创建第三列col3,它是列表中的任何元素,col2该元素包含在列表中相应行的列表中col1,否则np.nan。
它必须采用任何匹配的元素。
在这种情况下,那么,col3将是:
col1 col2 col3
0 ['how', 'are', 'you'] ['tell', 'how, 'me', 'you'] ['how', 'you']
1 ['im', 'fine', 'thanks'] ['who', 'cares'] [np.nan]
2 ['you', 'know'] ['know', 'this', 'padewan'] ['know']
3 [np.nan] ['who', 'are', 'you'] [np.nan]
Run Code Online (Sandbox Code Playgroud)
我试过
df['col3'] = [c in …Run Code Online (Sandbox Code Playgroud) 给定一个df编码主题和项目的数据框,看起来像
topic item
0 bucket
1 fish
2 car
0 pail
2 truck
3 glove
Run Code Online (Sandbox Code Playgroud)
哪里有X主题和Y项目,这样如果我查看每个主题的项目数
print(df.groupby(by='topic').agg('count'))
item
topic
0 8568
1 7539
2 48700
3 26036
4 4190
5 2153
... ...
X-2 328
X-1 5942
X 15871
Run Code Online (Sandbox Code Playgroud)
我怎么能做到这一点,没有主题的关联项目不超过 N 个?例如,让我们说N = 5000。然后,如果我做一个计数,我会得到
print(df.groupby(by='topic').agg('count'))
item
topic
0 5000
1 5000
2 5000
3 5000
4 4190
5 2153
... ...
X-2 328
X-1 5000
X 5000
Run Code Online (Sandbox Code Playgroud)
超过 5000 计数的所有内容都减少到 5000 计数,而低于 …
所以我在中间的某个地方有一个日期的字符串,111_Joe_Smith_2010_Assessment我希望将它们截断,使它们变成类似的东西111_Joe_Smith_2010.我认为可行的代码是
reverseString = currentString[::-1]
stripper = re.search('\d', reverseString)
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,这并不总能给我正确的结果.它大部分时间都是这样,但不时地,它会输出一个看起来像的字符串111_Joe_Smith_2010_A.
如果有人知道这有什么问题,那将是非常有帮助的!