小编Wat*_*y62的帖子

Pandas Concat 增加行数

我正在连接两个数据帧,所以我希望一个数据帧位于另一个数据帧。但首先我对初始数据框做了一些转换:

scaler = MinMaxScaler() 
real_data = pd.DataFrame(scaler.fit_transform(df[real_columns]), columns = real_columns)
Run Code Online (Sandbox Code Playgroud)

然后连接:

categorial_data  = pd.get_dummies(df[categor_columns], prefix_sep= '__')
train = pd.concat([real_data, categorial_data], axis=1, ignore_index=True)
Run Code Online (Sandbox Code Playgroud)

我不知道为什么,但行数增加了:

print(df.shape, real_data.shape, categorial_data.shape, train.shape)
(1700645, 23) (1700645, 16) (1700645, 130) (1703915, 146)
Run Code Online (Sandbox Code Playgroud)

发生了什么以及如何解决问题?

如您所见,train 的列数等于 real_data 和 categorial_data 列的总和

python concat python-3.x pandas

11
推荐指数
2
解决办法
8352
查看次数

写入GML文件时出现NetworkX密钥错误

使用compose()合并两个图形后尝试写入GML文件时,出现以下错误消息:

NetworkXError: 'user_id' is not a valid key
Run Code Online (Sandbox Code Playgroud)

背景是我使用以下命令导入了两个GML文件:

g = nx.read_gml(file_path + "test_graph_1.gml")
h = nx.read_gml(file_path + "test_graph_2.gml")
Run Code Online (Sandbox Code Playgroud)

每个节点(在两个GML文件中)文件的结构如下:

node [
id 9
user_id "1663413990"
file "wingsscotland.dat"
label "brian_bilston"
image "/Users/ian/development/gtf/gtf/img/1663413990.jpg"
type "friends"
statuses 21085
friends 737
followers 53425
listed 550
ffr 72.4898
lfr 0.1029
shape "triangle-up"
]
Run Code Online (Sandbox Code Playgroud)

导入每个文件之后,我可以检查所有节点属性,看看每个图中的节点都是唯一的。

我还看到默认情况下NetworkX会丢弃'id'字段,而und使用'label'作为节点的标识符。它保留了user_id属性(恰好是Twitter的user_id,非常适合我的目的)。

跑步

list(f.nodes(data=True))
Run Code Online (Sandbox Code Playgroud)

我可以看到上面节点的数据是:

('brian_bilston',
{'ffr': 72.4898,
'file': 'wingsscotland.dat',
'followers': 53425,
'friends': 737,
'image': '/Users/ian/development/gtf/gtf/img/1663413990.jpg',
'lfr': 0.1029,
'listed': 550,
'shape': 'triangle-up',
'statuses': 21085,
'type': 'friends',
'user_id': '1663413990'})
Run Code Online (Sandbox Code Playgroud)

在此测试用例中,有一个公共节点由图g和图h共享,即上面显示的一个。其他所有用户名和标签均唯一。

然后,我使用以下方法合并两个图:

f …
Run Code Online (Sandbox Code Playgroud)

python graphml networkx jupyter-notebook

5
推荐指数
1
解决办法
806
查看次数

将多个csv文件读取到Pandas数据框中

我正在尝试将多个CSV文件读取到Pandas数据框中。CSV不会以逗号分隔-字段以分号“;”分隔。

我的代码基于此处的答案。

我的数据全部在一个特定的子目录中: /data/luftdaten/5331

这是我运行的:

import glob
import pandas as pd

path =r'data/luftdaten/5331' # use your path

filenames = glob.glob(path + "/*.csv")
count_files = 0
dfs = []
for filename in filenames:
    if count_files ==0:
        dfs.append(pd.read_csv(filename, sep=";")) 
        count_files += 1
    else:
        dfs.append(pd.read_csv(filename, sep=";", skiprows=[0]))
        count_files +=1

big_frame = pd.concat(dfs, ignore_index=True)
Run Code Online (Sandbox Code Playgroud)

count_files用来监视它是否是第一个CSV-在这种情况下,我将导入标头。否则,它会跳过标题。

该代码执行确定。

如果我使用该目录中的单个文件运行它,那么一切都很好:

big_frame.info()
Run Code Online (Sandbox Code Playgroud)

输出:

RangeIndex:146个条目,0到145
数据列(**总共12列** s):
sensor_id 146非空int64
sensor_type 146非空对象
等等......

如果我在目录中有2个或更多文件来运行它,那么从一开始就会出错。

输出4个文件:

范围索引:1893个条目,0到1892
数据列(总计** 33列**):
-2.077 1164非空float64
-2.130 145非空float64
2.40 145非空float64

big_frame.head()在单个CSV版本上运行可以提供正确的列名: …

python csv dataframe pandas

4
推荐指数
1
解决办法
4677
查看次数