我需要通过名为"Keyword"的列对DataFrame进行分组,其中:
grouped = df.groupby('Keyword')
Run Code Online (Sandbox Code Playgroud)
然后我在搜索每组的大小:
a = grouped.size()
Run Code Online (Sandbox Code Playgroud)
结果如下:
Keyword
ATTORNEY 48
Appraiser 94
Attorney 1437
BASEBOARD 2
BELL PEPPER 1
BULLETIN BOARD 1
Bell Pepper 36
Bell pepper 19
Bulletin Board 20
Bulletin board 3
CANDY 765
CANDy 2
CANdy 1
... ...
Run Code Online (Sandbox Code Playgroud)
我想避免区分大小写的问题,并为"CANDY,CANDY,CANdy"等单词获得一个独特的组,这些组仅对某些较低或较高的字符有所不同.我试图df['Keyword'].str.lower()在分组之前将此问题设置转义,但它不起作用.任何帮助将非常感谢,谢谢.
我有一个非常大的网络需要在 Networkx 中读取和分析(大约 5 亿行),存储在 gzip 加权边缘列表(Node1 Node2 权重)中。到目前为止,我尝试用以下方式阅读它:
# Open and Read File
with gzip.open(network,'rb') as fh:
# Read Weighted Edge List
G = nx.read_weighted_edgelist(fh, create_using=nx.DiGraph())
Run Code Online (Sandbox Code Playgroud)
但由于它很大,我有一些内存问题。我想知道是否有一种方法可以沿着固定长度的块以“pandas”样式读取文件。感谢您的帮助。
编辑:
这是我的边缘列表文件的一小部分提取(Node1 Node2 Weight):
30879005 5242 11
44608582 2295986 4
24935102 737450 1
42230925 1801294 1
20926179 2332390 1
40959246 1100438 1
3291058 3226104 1
23192021 5818064 1
16328715 7695005 1
11561383 2102983 1
1886716 1378893 2
23192021 5818065 1
2060097 2060091 1
7176482 3222203 2
46586813 1599030 1
35151866 35151866 1 …Run Code Online (Sandbox Code Playgroud) 我在data.csv文件中有这个简单的数据框:
I,C,v
a,b,1
b,a,2
e,a,1
e,c,0
b,d,1
a,e,1
b,f,0
Run Code Online (Sandbox Code Playgroud)
我想转动它,然后返回一个方形表(作为矩阵).到目前为止,我已经阅读了数据框并构建了一个数据透视表:
df = pd.read_csv('data.csv')
d = pd.pivot_table(df,index='I',columns='C',values='v')
d.fillna(0,inplace=True)
Run Code Online (Sandbox Code Playgroud)
正确获取:
C a b c d e f
I
a 0 1 0 0 1 0
b 2 0 0 1 0 0
e 1 0 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
现在我想返回一个方形表,其中包含行中缺少的列索引,因此生成的表将是:
C a b c d e f
I
a 0 1 0 0 1 0
b 2 0 0 1 0 0
c 0 0 0 0 0 0
d …Run Code Online (Sandbox Code Playgroud) 从这个简单的数据框开始df:
col1,col2
1,3
2,1
3,8
Run Code Online (Sandbox Code Playgroud)
我想mask在列的名称函数中应用布尔值.我知道价值观很容易:
mask = df <= 1
df = df[mask]
Run Code Online (Sandbox Code Playgroud)
返回:
面具:
col1 col2
0 True False
1 False True
2 False False
Run Code Online (Sandbox Code Playgroud)
DF:
col1 col2
0 1 NaN
1 NaN 1
2 NaN NaN
Run Code Online (Sandbox Code Playgroud)
正如所料.现在我想根据列名获得一个布尔掩码,如:
mask = df == df['col_1']
Run Code Online (Sandbox Code Playgroud)
哪个应该返回:
面具
col1 col2
0 True False
1 True False
2 True False
Run Code Online (Sandbox Code Playgroud)
编辑:
这看起来很奇怪,但我需要这些掩码后来通过列seaborn heatmaps过滤.
为了帮助说明我想在这里实现的目标是一个名为的 DataFrame df:
column1 column2
1 foo faa
2 bar car
3 dog dog
4 cat rat
5 foo foo
6 bar cat
7 bird rat
8 cat dog
9 bird foo
10 bar car
Run Code Online (Sandbox Code Playgroud)
我想对 DataFrame 进行子集化 - 条件是如果一个字符串column2包含多个值之一,则行被删除。
对于单个值,这很容易,在本例中为“foo”:
df = df[~df['column2'].str.contains("foo")]
但是假设我想删除 column2 中的字符串包含“cat”或“foo”的所有行。当应用于df上述,这将落5行。
什么是最有效,最pythonic的方法来做到这一点?这可以是函数、多个布尔值或其他我没有想到的形式。
isin 不起作用,因为它需要完全匹配。
注意:我已经编辑了这个问题,因为我第一次犯了一个错误。道歉。
我有一个df
A B C D
A 1.000000 0.202557 0.689214 -.705000
B 0.202557 1.000000 0.038306 -0.113245
C 0.689214 0.038306 1.000000 0.074773
D -.705000 -0.113245 0.074773 1.000000
Run Code Online (Sandbox Code Playgroud)
我想按与A列的相关性排序,应按正负排序
A C B D
A 1.000000 0.689214 0.202557 -.705000
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?谢谢