我正在尝试在熊猫中建立一个脚本,该脚本可以帮助我对一些数据进行排序,我正在研究如何做到这一点,这是我已经取得的成就。 这是我第一次尝试大熊猫。
我的想法是:拥有一个包含4个列的csv:1个包含名称,3个包含数据。我想根据名称对数据进行分组,这些名称的末尾总会有一个下划线+一个递增的数字,并且会有所不同。 我还没有找到如何编码的方法,所以现在我正试图用类似的字符来破坏数据。
这是我的代码:
import pandas as pd import matplotlib.pyplot as plt from matplotlib import style df = pd.read_csv("C:\Python27\Projects\Pandas\csv_testing\csvtesty.csv",header=None,names=['names','x','y','z','code'])
#df.set_index('names',inplace=True) g = (df.groupby(['names', df.names.str[:3]])) for names, names_df in g:
print(names)
print(names_df)
我的csv示例:
e3_30,3232.77,652478.1833,112.100,10272
e3_31,3232.78,652478.1834,112.101,10471
e3_32,3232.79,652478.1835,112.102,10670
dawn21_1,3232.70,652478.1826,112.093,10869
dawn21_2,3232.78,652478.1834,112.101,11068
dawn21_3,3232.86,652478.1842,112.109,11267
dawn21_4,3232.94,652478.1850,112.117,11466
dawn21_5,3232.102,652478.1858,112.125,11665
我试图对其进行分类,以将它们分成具有相似名称的数据框。
我的输出的一部分:
names x y z code
0 d1_1 3232.27 652478.07 112.05 123
names x y z code
9 d1_10 3232.4 652478.464 112.063 1914
names x y z code
10 d1_11 3232.42 652478.577 112.065 2113
names x y z code
11 d1_12 3232.44 652478.69 112.067 2312
names x y z code
12 d1_13 3232.46 652478.803 112.069 2511
names x y z code
13 d1_14 3232.48 652478.916 112.071 2710
names x y z code
14 d1_15 3232.5 652478.1029 112.073 2909
names x y z code
15 d1_16 3232.52 652478.1142 112.075 3108
names x y z code
16 d1_17 3232.54 652478.1255 112.077 3307
names x y z code
17 d1_18 3232.56 652478.1368 112.079 3506
names x y z code
18 d1_19 3232.58 652478.1481 112.081 3705
names x y z code
1 d1_2 3232.28 652478.08 112.051 322
names x y z code
19 d1_20 3232.6 652478.1594 112.083 3904
names x y z code
20 d1_21 3232.62 652478.1707 112.085 4103
names x y z code
21 d1_22 3232.64 652478.182 112.087 4302
names x y z code
2 d1_3 3232.29 652478.09 112.052 521
names x y z code
3 d1_4 3232.3 652478.1 112.053 720
names x y z code
4 d1_5 3232.31 652478.11 112.054 919
names x y z code
5 d1_6 3232.32 652478.12 112.055 1118
names x y z code
6 d1_7 3232.34 652478.125 112.057 1317
names x y z code
7 d1_8 3232.36 652478.238 112.059 1516
我可以找到的所有示例在列中都有不同的名称,他们希望它将它们分隔开。 一些帮助或指示会帮助我很多。
答案 0 :(得分:0)
使用_
分割,并通过建立索引选择第一个列表:
g = df.groupby(df.names.str.split('_').str[0])